Команда START TRANSACTION
Команда START TRANSACTION используется для начала
транзакции - набора SQL-операций, которые выполняются
как единое целое. Все изменения, сделанные внутри транзакции,
могут быть либо зафиксированы командой COMMIT,
либо отменены командой ROLLBACK.
Синтаксис
Минимальный синтаксис используется в большинстве случаев для начала транзакции без дополнительных параметров:
START TRANSACTION
Расширенный синтаксис позволяет указать режим доступа к данным внутри транзакции:
START TRANSACTION
[READ WRITE | READ ONLY]
Полный синтаксис используется для управления консистентностью и режимом выполнения транзакции:
START TRANSACTION
[WITH CONSISTENT SNAPSHOT]
[READ WRITE | READ ONLY]
Таблицы для примеров
| id | name | balance |
|---|---|---|
| 1 | Ivan | 1000 |
| 2 | Olga | 1500 |
Пример
Давайте начнём транзакцию и выполним перевод средств между двумя счетами с последующей фиксацией изменений:
START 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:
START 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,
которая блокирует выбранные строки