transaction.md 766 字节
Newer Older
M
Mars Liu 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
# 事务

现有 test1 表如下

```postgresql
create table test1(a integer primary key );
```

我们执行下面的语句

```postgresql
CREATE PROCEDURE transaction_test1()
LANGUAGE plpgsql
AS $$
BEGIN
    FOR i IN 0..9 LOOP
        INSERT INTO test1 (a) VALUES (i);
        IF i % 2 = 0 THEN
            COMMIT;
        ELSE
            ROLLBACK;
        END IF;
    END LOOP;
END;
$$;

CALL transaction_test1();
```

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

## 答案

每当循环迭代到偶数的时候提交插入,最终 test1 表中是`0,2,4,6,8`

## 选项

### A

以最后一次提交为准,最终 test1 表中是 0 到 9 共九个数字。

### B

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

### C

这个过程执行会报错。