我搜索了MySql文档,但一无所获。我试过这个..。回滚似乎没有取消table1和table2中的插入
Start Transaction;
INSERT INTO Table1(field1,field2) VALUES (value1, value2);
INSERT INTO Table2(field3,field4) VALUES (value3, value4);
INSERT INTO Table3(field5,field6) VALUES (value5, value6);
Rollback;UPDATE:谢谢您的所有回答,但我忘了告诉您,第三条语句抛出了一个异常(违反约束)。
发布于 2010-07-16 17:31:30
目前版本的MySql v5.1 .它不支持在多个表上回滚。这可能会在不久的将来改变(我希望)!
发布于 2010-06-22 15:11:07
是的,但只适用于支持事务的表。若要检查表是否兼容,请执行以下操作
SELECT table_name
, engine
FROM information_schema.tables t
WHERE t.table_name IN('Table1','Table2','Table3');如果其中任何一个是MyISAM,则它们与事务不兼容。您需要将它们全部更改为InnoDB
ALTER TABLE [TableName] ENGINE=InnoDB;但是请注意- MyISAM支持一些InnoDB不支持的特性,例如全文搜索。
发布于 2010-06-22 15:07:03
尝试将以下内容添加到脚本的开头:
SET autocommit=0;默认情况下,除非您另有通知,否则MySQL将在每个语句之后发出commit。
https://stackoverflow.com/questions/3094398
复制相似问题