# 事务 现有 test1 表如下 ```sql create table test1(a integer primary key ); ``` 我们执行下面的语句 ```sql CREATE PROCEDURE transaction_test1() BEGIN declare idx int; set idx = 0; iter: LOOP start transaction ; INSERT INTO test1 (a) VALUES (idx); IF (idx % 2) = 0 THEN COMMIT; ELSE ROLLBACK; END IF; IF idx < 10 THEN set idx = idx + 1; ITERATE iter; END IF; LEAVE iter; END LOOP iter; END; CALL transaction_test1(); ``` 时,下面哪一项的解释是对的?
点击进入[MySQL实战练习环境](https://mydev.csdn.net/product/pod/new?image=cimg-centos7-skilltreemysql&connect=auto&create=auto&utm_source=skill){target="_blank"}。 * `show databases;` 列出所有数据库 * `show tables;` 列出所有表 ## 答案 每当循环迭代到偶数的时候提交插入,最终 test1 表中是`0,2,4,6,8,10`。 ## 选项 ### A 以最后一次提交为准,最终 test1 表中是 0 到 10 共11个数字。 ### B 所有插入都回滚了。test1 表中没有数据。 ### C 这个过程执行会报错。