BEGIN, COMMIT, ROLLBACK

Description

Syntax

  1. BEGIN;
  2. INSERT INTO table_name ...
  3. COMMIT;
  1. BEGIN [ WITH LABEL label];
  2. INSERT INTO table_name ...
  3. ROLLBACK;

Parameters

label: 用于指定当前事务的标签名。

Note

事务只能对insert使用,而不能对update和delete使用,当指定标签时,可通过以下命令检查事务的运行状态: SHOW TRANSACTION WHERE LABEL = 'label'

example

  1. 开启一个事务,不指定标签,执行insert后提交。
  1. BEGIN
  2. INSERT INTO test VALUES (1, 2);
  3. INSERT INTO test (c1, c2) VALUES (1, 2);
  4. INSERT INTO test (c1, c2) VALUES (1, DEFAULT);
  5. INSERT INTO test (c1) VALUES (1);
  6. COMMIT:

所有在begincommit之间的数据会被插入到test表中。

  1. 开启一个事务,不指定标签,执行insert后,回滚。
  1. BEGIN
  2. INSERT INTO test VALUES (1, 2);
  3. INSERT INTO test (c1, c2) VALUES (1, 2);
  4. INSERT INTO test (c1, c2) VALUES (1, DEFAULT);
  5. INSERT INTO test (c1) VALUES (1);
  6. ROLLBACK:

所有在begincommit之间的数据会取消,没有任何数据插入到test表中。

  1. 开启一个事务,指定标签为test_label1,执行insert后提交。
  1. BEGIN WITH LABEL test_label1
  2. INSERT INTO test VALUES (1, 2);
  3. INSERT INTO test (c1, c2) VALUES (1, 2);
  4. INSERT INTO test (c1, c2) VALUES (1, DEFAULT);
  5. INSERT INTO test (c1) VALUES (1);
  6. COMMIT:

所有在begincommit之间的数据会被插入到test表中。 标签test_label1用于标记该事务,可以通过以下命令来检查事务的状态:SHOW TRANSACTION WHERE LABEL = 'test_label1'

keyword

BEGIN, COMMIT, ROLLBACK