BEGIN, COMMIT, ROLLBACK
Description
Syntax
BEGIN;
INSERT INTO table_name ...
COMMIT;
BEGIN [ WITH LABEL label];
INSERT INTO table_name ...
ROLLBACK;
Parameters
label: 用于指定当前事务的标签名。
Note
事务只能对insert使用,而不能对update和delete使用,当指定标签时,可通过以下命令检查事务的运行状态: SHOW TRANSACTION WHERE LABEL = 'label'
example
- 开启一个事务,不指定标签,执行insert后提交。
BEGIN
INSERT INTO test VALUES (1, 2);
INSERT INTO test (c1, c2) VALUES (1, 2);
INSERT INTO test (c1, c2) VALUES (1, DEFAULT);
INSERT INTO test (c1) VALUES (1);
COMMIT:
所有在begin
和commit
之间的数据会被插入到test表中。
- 开启一个事务,不指定标签,执行insert后,回滚。
BEGIN
INSERT INTO test VALUES (1, 2);
INSERT INTO test (c1, c2) VALUES (1, 2);
INSERT INTO test (c1, c2) VALUES (1, DEFAULT);
INSERT INTO test (c1) VALUES (1);
ROLLBACK:
所有在begin
和commit
之间的数据会取消,没有任何数据插入到test表中。
- 开启一个事务,指定标签为test_label1,执行insert后提交。
BEGIN WITH LABEL test_label1
INSERT INTO test VALUES (1, 2);
INSERT INTO test (c1, c2) VALUES (1, 2);
INSERT INTO test (c1, c2) VALUES (1, DEFAULT);
INSERT INTO test (c1) VALUES (1);
COMMIT:
所有在begin
和commit
之间的数据会被插入到test表中。 标签test_label1
用于标记该事务,可以通过以下命令来检查事务的状态:SHOW TRANSACTION WHERE LABEL = 'test_label1'
。
keyword
BEGIN, COMMIT, ROLLBACK