MySQL到底支不支撑事务嵌套?
发布时间:08/01 来源:未知 浏览:
关键词:
begin; # 操纵1 begin; # 操纵2 rollback;
施行完后涌现了操纵1的数据真正写入,只要操纵2的数据回滚了。在首先个事务没有提交或回滚时,再开启第二个事务时,会主动提交首先个事务。
这显明不相符心理预测,并且也没法回滚一局部操纵。那么题目来了,MySQL 支不支撑事务嵌套呢?
这个题目很难正确答复支撑还是不支撑!
第一,调取屡次begin的写法,在MySQL里确定是没法第一事务嵌套的。经过群内一名伴侣的提示,理解到MySQL中有一个叫savepoint和rollback to的语句。
示例代码:
DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; begin; insert into `test`(`name`) values('111'); SAVEPOINT p1; insert into `test`(`name`) values('222'); ROLLBACK TO p1; commit;
终究施行效果,test表中只要111这个数据,实现了局部操纵的回滚操纵。同理也以免了屡次开启事务,致使前一个事务被提交的题目。
可能savepoint和rollback to语句并不克不及称之为事务嵌套,也不克不及说MySQL是支撑还是不支撑事务嵌套。总之通过savepoint和rollback to,是可以用来达到一些事务嵌套特性的。
以上就是MySQL到底支不支撑事务嵌套?的细致内容,更多请关注 百分百源码网 其它相干文章!