Основы TCL (Transaction Control Language) операций: COMMIT, ROLLBACK

TCL (Transaction Control Language) — это язык управления транзакциями, который используется для обеспечения целостности данных в базе данных. Основные операции TCL включают COMMIT и ROLLBACK, которые управляют транзакциями, позволяя сохранить или откатить изменения, внесённые в ходе выполнения SQL-команд.

Что такое транзакция?

Транзакция — это группа операций SQL, которые выполняются как единое целое. Транзакция либо выполняется полностью, либо не выполняется вообще. Это обеспечивает целостность и согласованность данных в случае возникновения ошибок или сбоев.

COMMIT

Команда COMMIT используется для фиксации всех изменений, сделанных в рамках текущей транзакции, в базе данных. После выполнения COMMIT изменения становятся постоянными и видимыми для других пользователей.

Основной синтаксис:

COMMIT;

Примеры:

  1. Фиксация изменений:

BEGIN;

UPDATE employees SET salary = salary * 1.10 WHERE department_id = 2;
DELETE FROM employees WHERE id = 10;

COMMIT;

В этом примере транзакция начинается с BEGIN (или START TRANSACTION, в зависимости от СУБД), затем выполняются две операции — обновление и удаление данных. Выполнение COMMIT фиксирует эти изменения в базе данных.

ROLLBACK

Команда ROLLBACK используется для отмены всех изменений, сделанных в рамках текущей транзакции. ROLLBACK возвращает базу данных в состояние, в котором она находилась до начала транзакции, обеспечивая защиту от ошибок.

Основной синтаксис:

ROLLBACK;

Примеры:

  1. Отмена изменений:

BEGIN;

UPDATE employees SET salary = salary * 1.10 WHERE department_id = 2;
DELETE FROM employees WHERE id = 10;

ROLLBACK;

В этом примере, если после выполнения операций по обновлению и удалению данных возникнет ошибка или пользователь решит отменить изменения, выполнение ROLLBACK отменит все внесённые изменения, и база данных вернётся к своему предыдущему состоянию.

SAVEPOINT

Команда SAVEPOINT позволяет установить точку сохранения внутри транзакции, к которой можно откатиться без отмены всей транзакции.

Основной синтаксис:

SAVEPOINT savepoint_name;

Примеры использования SAVEPOINT:

BEGIN;

UPDATE employees SET salary = salary * 1.10 WHERE department_id = 2;

SAVEPOINT sp1;

DELETE FROM employees WHERE id = 10;

ROLLBACK TO sp1;

COMMIT;

В этом примере устанавливается точка сохранения sp1. Если после удаления сотрудника пользователь решит отменить только это действие, он может выполнить ROLLBACK TO sp1, чтобы откатиться к точке сохранения и продолжить транзакцию с момента её создания.

Транзакционная изоляция

Транзакции работают в условиях изоляции, что позволяет им быть независимыми от других транзакций, выполняющихся одновременно. Уровни изоляции (например, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) определяют, как и когда изменения, внесённые в рамках одной транзакции, становятся видимыми для других.

Заключение

  • COMMIT: Фиксирует все изменения, сделанные в рамках текущей транзакции, делая их постоянными в базе данных.

  • ROLLBACK: Отменяет все изменения, сделанные в рамках текущей транзакции, возвращая базу данных к её предыдущему состоянию.

  • SAVEPOINT: Устанавливает точку сохранения внутри транзакции, позволяя откатиться к ней, если необходимо отменить часть изменений.

Использование команд TCL позволяет управлять транзакциями, обеспечивая целостность данных и контролируя, какие изменения должны быть зафиксированы, а какие отменены.

Last updated