Это именно то, для чего транзакции .Если какая-либо из команд завершится неудачно, то после отката START TRANSACTION
произойдет откат:
START TRANSACTION;
INSERT INTO sometable VALUES(NULL,'foo','bar');
INSERT INTO someothertable VALUES (LAST_INSERT_ID(),'baz');
COMMIT;
Это MySQL, вы не можете использовать транзакции с таблицами MyISAM (вам понадобятся таблицы для использования некоторыхдвижок, который поддерживает это, вероятно, InnoDB).
Это никогда не будет вставлено в таблицу (обычно у вас есть некоторое ветвление, например, IF):
START TRANSACTION;
INSERT INTO sometable VALUES(NULL,'data','somemoredata');
ROLLBACK;
Caveat: SQL командыкоторые изменяют базу данных , структура (например, CREATE
, ALTER
, DROP
) не может быть отменена!