mysql 事务如果出现嵌套会怎么样了?在MVC 的开发模式下, 大伙经常会在model层 封装事务,如果 model 层有互相调用的话,很容易出现事务嵌套,那么事务嵌套会出现什么问题呢? 那么应该如何设计结构避免出现事务嵌套么?本次着重解决第一个问题。
时序 | 事务一 | 事务二 |
---|---|---|
1 | start transaction; | |
2 | insert into test set id = 2; | |
3 | select * from test; | |
4 | start transaction; | |
5 | select * from test; |
命令行按照以上时序执行的时候会发现,时序3 的select 没有id = 2 的数据; 但是 时序 5 的时候出现了 id = 2的数据;因此可以初步断定,事务嵌套的时候,start transaction 具有类似于commit的提交功能。实时确实如此,参照MySQL嵌套事务的讨论; 不仅 start transaction 具有引起 commit 提交的功能,下列语句同样会引起commit
ALTER FUNCTION
ALTER PROCEDURE
ALTER TABLE
BEGIN
CREATE DATABASE
CREATE FUNCTION
CREATE INDEX
CREATE PROCEDURE
CREATE TABLE
DROP DATABASE
DROP FUNCTION
DROP INDEX
DROP PROCEDURE
DROP TABLE
UNLOCK TABLES
LOAD MASTER DATA
LOCK TABLES
RENAME TABLE
TRUNCATE TABLE
SET AUTOCOMMIT=1
START TRANSACTION
参考文献:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。