首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql可以在多个表上回滚一个sql事务吗?

问MySql可以在多个表上回滚一个sql事务吗?
EN

Stack Overflow用户
提问于 2010-06-22 15:01:07
回答 3查看 6.5K关注 0票数 6

我搜索了MySql文档,但一无所获。我试过这个..。回滚似乎没有取消table1和table2中的插入

代码语言:javascript
复制
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:谢谢您的所有回答,但我忘了告诉您,第三条语句抛出了一个异常(违反约束)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-16 17:31:30

目前版本的MySql v5.1 .它不支持在多个表上回滚。这可能会在不久的将来改变(我希望)!

票数 1
EN

Stack Overflow用户

发布于 2010-06-22 15:11:07

是的,但只适用于支持事务的表。若要检查表是否兼容,请执行以下操作

代码语言:javascript
复制
SELECT table_name
     , engine
  FROM information_schema.tables t
 WHERE t.table_name IN('Table1','Table2','Table3');

如果其中任何一个是MyISAM,则它们与事务不兼容。您需要将它们全部更改为InnoDB

代码语言:javascript
复制
ALTER TABLE [TableName] ENGINE=InnoDB;

但是请注意- MyISAM支持一些InnoDB不支持的特性,例如全文搜索。

票数 9
EN

Stack Overflow用户

发布于 2010-06-22 15:07:03

尝试将以下内容添加到脚本的开头:

代码语言:javascript
复制
SET autocommit=0;

默认情况下,除非您另有通知,否则MySQL将在每个语句之后发出commit。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3094398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档