mysql 中支持嵌套事务么?

使用命令是不报错的,但是最外层的事务rollback了,发现在数据库中还是会多两条数据,这是为什么?

set autocommit=0;
start TRANSACTION ;
insert into person (firstName,lastName) VALUES ('tr1','tr2');
START transaction ;
insert into person (firstName,lastName) VALUES ('tr1','tr2');
commit;
ROLLBACK;

[quote]http://hideto.iteye.com/blog/195275[/quote]

MySQL存储过程之事务管理

讲得很清楚.

START TRANSACTION:开始事务,autocommit设为0,如果已经有一个事务在运行,则会触发一个隐藏的COMMIT

[quote]mysql> select * from one;
Empty set (0.00 sec)

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into one values(1,'z');
Query OK, 1 row affected (0.00 sec)

mysql> start transaction;
Query OK, 0 rows affected (0.03 sec)

mysql> select * from one;
+------+------+
| id | name |
+------+------+
| 1 | z |
+------+------+
1 row in set (0.00 sec)[/quote]

set autocommit=0;
start TRANSACTION ;
insert into person (firstName,lastName) VALUES ('tr1','tr2');

START transaction ;
// 这个时候前一个事务已经被commit了. insert了一次.

insert into person (firstName,lastName) VALUES ('tr1','tr2');
commit;
// 又insert了一遍

ROLLBACK;