Mam zapytanie, które prezentuje się tak i jest bardzo, ale to bardzo długie. (Troche je tu skróciłem)
Jest to wycinek ze skryptu PHP, którego zadaniem jest stworzyć nową bazę danych i wgrać do niej potrzebne dane. Jeżeli coś się nie powiedzie, to wszystko ma zostać cofnięte.
START TRANSACTION; CREATE USER \''.$dblogin.'\'@\'localhost\' IDENTIFIED BY \''.$haslo.'\'; GRANT USAGE ON * . * TO \''.$dblogin.'\'@\'localhost\' IDENTIFIED BY \''.$haslo.'\' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; CREATE DATABASE IF NOT EXISTS `'.$dblogin.'`; GRANT ALL PRIVILEGES ON `'.$dblogin.'` . * TO \''.$dblogin.'\'@\'localhost\' ; USE forum_db; INSERT INTO `configs` (id, domain, name, dbname, dbuser, dbpass, dbprefix) VALUES(0, \'domena\', \'nazwa\', \''.$dblogin.'\', '.$dblogin.'\', \''.$haslo.'\', \'s_\'); USE '.$dblogin.'; -- tutaj pełno CREATE TABLE i INSERT COMMIT;
Tak logicznie rzecz biorąc to brakuje polecenia ROLLBACK, tyle, że jak wstawiam warunek:
IF @@ERROR <> 0 ROLLBACK;
To błędem się to kończy składni.