Команда START TRANSACTION

Команда START TRANSACTION используется для начала транзакции - набора SQL-операций, которые выполняются как единое целое. Все изменения, сделанные внутри транзакции, могут быть либо зафиксированы командой COMMIT, либо отменены командой ROLLBACK.

Синтаксис

Минимальный синтаксис используется в большинстве случаев для начала транзакции без дополнительных параметров:

sqlSTART TRANSACTION

Расширенный синтаксис позволяет указать режим доступа к данным внутри транзакции:

sqlSTART TRANSACTION
[READ WRITE | READ ONLY]

Полный синтаксис используется для управления консистентностью и режимом выполнения транзакции:

sqlSTART TRANSACTION
[WITH CONSISTENT SNAPSHOT]
[READ WRITE | READ ONLY]

Таблицы для примеров

accounts
id name balance
1 Ivan 1000
2 Olga 1500

Пример

Давайте начнём транзакцию и выполним перевод средств между двумя счетами с последующей фиксацией изменений:

sqlSTART TRANSACTION;

UPDATE accounts
SET balance = balance - 200
WHERE id = 1;

UPDATE accounts
SET balance = balance + 200
WHERE id = 2;

COMMIT;

Результат выполнения кода:

id name balance
1 Ivan 800
2 Olga 1700

Пример

Давайте начнём транзакцию и отменим изменения с помощью ROLLBACK:

sqlSTART TRANSACTION;

UPDATE accounts
SET balance = balance - 500
WHERE id = 1;

ROLLBACK;

Результат выполнения кода:

id name balance
1 Ivan 1000
2 Olga 1500

Смотрите также

  • команду COMMIT,
    которая фиксирует изменения
  • команду ROLLBACK,
    которая отменяет изменения
  • команду SAVEPOINT,
    которая ставит промежуточную точку отката
  • команду SELECT ... FOR UPDATE,
    которая блокирует выбранные строки