try { DB::query(NULL, 'START TRANSACTION')->execute(); //1 DB::query(NULL, 'CREATE TABLE lrt_resources_'.$name_lower.' (ID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(ID))')->execute(); //2 DB::query(Database::INSERT, 'INSERT INTO lrt_equpment_categories (name, name_lower) VALUES ("'.$name.'","'.$name_lower.'")')->execute(); //3 DB::query(NULL, 'COMMIT')->execute(); } catch(Exception $e) { DB::query(NULL, 'ROLLBACK')->execute(); throw new Exception('An error occured with database. Category has not been added.'); }
czyli jeżeli np będzie problem z INSERTem (3) to wyrzuca wyjątek, który jest łapany i powinien byc robiony ROLLBACK. Niestety, mimo że wyjątek jest przechwytywany to nie jest robiony ROLLBACK. Czyli po błędzie przy INSERT nie usuwa tej tabeli z zapytania 2. Co zepsułem?