Какие команды управления транзакциями вы знаете?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
BEGIN (может быть неявным), COMMIT, ROLLBACK.
-
BEGIN: Начинает новую транзакцию. Является необязательным для первого оператора
DMLв сессии, так как транзакция начнется неявно.BEGIN TRANSACTION; -
COMMIT: Сохраняет все изменения, сделанные в текущей транзакции, и завершает ее.
COMMIT; -
ROLLBACK: Отменяет все изменения, сделанные в текущей транзакции, и завершает ее.
ROLLBACK;
Некоторые СУБД также поддерживают:
-
SAVEPOINT: Устанавливает точку сохранения внутри текущей транзакции. Позволяет откатиться к этой точке, не отменяя всю транзакцию.
SAVEPOINT my_savepoint; -
ROLLBACK TO SAVEPOINT: Отменяет изменения до указанной точки сохранения.
ROLLBACK TO SAVEPOINT my_savepoint; -
RELEASE SAVEPOINT: Удаляет точку сохранения.
RELEASE SAVEPOINT my_savepoint;
Пример последовательности команд:
BEGIN; -- начать транзакцию
INSERT INTO users (name) VALUES ('Alice'); -- выполнить операцию
SAVEPOINT before_update; -- установить точку сохранения
UPDATE products SET price = price * 1.1 WHERE id = 1; -- выполнить еще операцию
-- Если что-то пошло не так с обновлением, можно откатиться к точке сохранения
-- ROLLBACK TO SAVEPOINT before_update;
-- Если все хорошо, фиксируем изменения
COMMIT; -- завершить транзакцию и сохранить изменения
-- Если нужно отменить всю транзакцию после BEGIN
-- ROLLBACK;
Понимание этих команд критически важно для обеспечения целостности данных в приложениях, работающих с реляционными базами данных.