我已经搜索了 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;
更新:感谢所有回答,但我忘了告诉你第三条语句抛出异常(违反约束)。
最佳答案
是的,但仅限于支持事务的表。要检查您的表是否兼容,请执行此操作
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 不支持的某些功能,例如全文搜索。
关于mysql - MySql 可以在多个表上回滚 sql 事务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3094398/