ABORT

Synopsis

Use the ABORT statement to roll back the current transaction and discards all updates by the transaction.

Syntax

  1. abort ::= ABORT [ TRANSACTION | WORK ]

abort

ABORT - 图1

Semantics

abort

ABORT [ TRANSACTION | WORK ]

WORK

Add optional keyword — has no effect.

TRANSACTION

Add optional keyword — has no effect.

  • The SERIALIZABLE isolation level not yet supported. (This is currently in progress).
  • Currently YugabyteDB will always use the snapshot isolation level internally. For more information, see Transaction isolation levels.

Examples

Create a sample table.

  1. yugabyte=# CREATE TABLE sample(k1 int, k2 int, v1 int, v2 text, PRIMARY KEY (k1, k2));

Begin a transaction and insert some rows.

  1. yugabyte=# BEGIN TRANSACTION; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
  1. yugabyte=# INSERT INTO sample(k1, k2, v1, v2) VALUES (1, 2.0, 3, 'a'), (1, 3.0, 4, 'b');

Open the YSQL shell (ysqlsh) and begin another transaction to insert some more rows.

  1. yugabyte=# BEGIN TRANSACTION; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
  1. yugabyte=# INSERT INTO sample(k1, k2, v1, v2) VALUES (2, 2.0, 3, 'a'), (2, 3.0, 4, 'b');

In each shell, check the only the rows from the current transaction are visible.

First shell.

  1. yugabyte=# SELECT * FROM sample; -- run in first shell
  1. k1 | k2 | v1 | v2
  2. ----+----+----+----
  3. 1 | 2 | 3 | a
  4. 1 | 3 | 4 | b
  5. (2 rows)

Second shell.

  1. yugabyte=# SELECT * FROM sample; -- run in second shell
  1. k1 | k2 | v1 | v2
  2. ----+----+----+----
  3. 2 | 2 | 3 | a
  4. 2 | 3 | 4 | b
  5. (2 rows)

Commit the first transaction and abort the second one.

  1. yugabyte=# COMMIT TRANSACTION; -- run in first shell.

Abort the current transaction (from the first shell).

  1. yugabyte=# ABORT TRANSACTION; -- run second shell.

In each shell, check that only the rows from the committed transaction are visible.

  1. yugabyte=# SELECT * FROM sample; -- run in first shell.
  1. k1 | k2 | v1 | v2
  2. ----+----+----+----
  3. 1 | 2 | 3 | a
  4. 1 | 3 | 4 | b
  5. (2 rows)
  1. yugabyte=# SELECT * FROM sample; -- run in second shell.
  1. k1 | k2 | v1 | v2
  2. ----+----+----+----
  3. 1 | 2 | 3 | a
  4. 1 | 3 | 4 | b
  5. (2 rows)

See also