transaction.md 1.1 KB
Newer Older
M
Mars Liu 已提交
1 2 3 4
# 事务

现有 test1 表如下

fix bug  
张志晨 已提交
5
```sql
M
Mars Liu 已提交
6 7 8 9 10
create table test1(a integer primary key );
```

我们执行下面的语句

fix bug  
张志晨 已提交
11
```sql
M
Mars Liu 已提交
12 13
CREATE PROCEDURE transaction_test1()
BEGIN
M
Mars Liu 已提交
14 15 16 17 18 19
    declare idx int;
    set idx = 0;
    iter: LOOP
        start transaction ;
        INSERT INTO test1 (a) VALUES (idx);
        IF (idx % 2) = 0 THEN
M
Mars Liu 已提交
20 21 22 23
            COMMIT;
        ELSE
            ROLLBACK;
        END IF;
M
Mars Liu 已提交
24 25 26 27 28 29
        IF idx < 10 THEN
            set idx = idx + 1;
            ITERATE iter;
        END IF;
        LEAVE iter;
    END LOOP iter;
M
Mars Liu 已提交
30 31 32 33 34 35 36
END;

CALL transaction_test1();
```

时,下面哪一项的解释是对的?

M
Mars Liu 已提交
37 38
<hr/>

F
feilong 已提交
39
点击进入[MySQL实战练习环境](https://mydev.csdn.net/product/pod/new?image=cimg-centos7-skilltreemysql&connect=auto&create=auto&utm_source=skill){target="_blank"}。
F
feilong 已提交
40

F
feilong 已提交
41 42
* `show databases;` 列出所有数据库
* `show tables;` 列出所有表
M
Mars Liu 已提交
43

M
Mars Liu 已提交
44 45
## 答案

M
Mars Liu 已提交
46
每当循环迭代到偶数的时候提交插入,最终 test1 表中是`0,2,4,6,8,10`
M
Mars Liu 已提交
47 48 49 50 51

## 选项

### A

M
Mars Liu 已提交
52
以最后一次提交为准,最终 test1 表中是 0 到 10 共11个数字。
M
Mars Liu 已提交
53 54 55 56 57 58 59 60

### B

所有插入都回滚了。test1 表中没有数据。

### C

这个过程执行会报错。