Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Databricks SQL
Отменяет текущую транзакцию, отменяя все изменения, внесенные с начала транзакции. Сведения о требованиях и шаблонах использования для интерактивных транзакций см. в разделе "Интерактивные транзакции".
Синтаксис
ROLLBACK [ TRANSACTION | WORK ]
Параметры
Это выражение не имеет параметров.
Примечания
- Если активная транзакция
ROLLBACKотсутствует, выполнение не приводит к ошибке. - Если операция в транзакции приводит к ошибке, транзакция вводит прерванное состояние. Последующие операции чтения и записи отклоняются с сообщением об ошибке, пока транзакция не будет откатена пользователем в явной форме.
- Для выполнения этой инструкции необходимо иметь активную транзакцию и соответствующие разрешения на все объекты, которые были считываются или изменены в транзакции.
Примеры
В следующих примерах показано, как откатить интерактивные транзакции.
Базовый откат
Выполните каждую инструкцию в отдельной ячейке:
BEGIN TRANSACTION;
-- Attempt an insert operation
INSERT INTO my_table VALUES (1, 'incorrect-value');
-- After discovering the mistake, rollback the transaction
-- (no changes are actually made to the tables)
ROLLBACK TRANSACTION;
Обработка ошибок выполнения
Если операция в транзакции терпит неудачу, прежде чем начать новую транзакцию, необходимо явно откатить. Выполните каждое выражение в отдельной ячейке.
BEGIN TRANSACTION;
-- A query that causes a division by zero error
SELECT 1/0;
-- Throws error asking user to roll back the transaction
SELECT 1;
-- After error, user must roll back the transaction
-- as it cannot be committed
ROLLBACK TRANSACTION;
Обработка ошибок синтаксического анализа
Ошибки синтаксического анализа также требуют настройки отката. Выполните каждую инструкцию в отдельной ячейке:
BEGIN TRANSACTION;
-- A query that causes a parsing error
SELLLLLLECT 1;
-- Throws error asking user to roll back the transaction
SELECT 1;
-- After error, user must roll back the transaction
-- as it cannot be committed
ROLLBACK TRANSACTION;
Условный откат
Можно использовать ROLLBACK для условной логики на основе бизнес-правил. Выполните каждое утверждение в отдельной ячейке.
BEGIN TRANSACTION;
-- Make changes
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Check a condition and rollback if not met
BEGIN
DECLARE total_balance INT;
SET total_balance = (SELECT SUM(balance) FROM accounts);
IF total_balance < 0 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END;
Откат после неудачной фиксации
Если COMMIT неудача, необходимо выполнить откат явно. Выполните каждую инструкцию в отдельной ячейке:
BEGIN TRANSACTION;
-- Make changes
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Attempt to commit
COMMIT;
-- If COMMIT fails (e.g., due to write conflict),
-- the transaction is aborted
-- You must explicitly roll back before starting a new transaction
ROLLBACK;
Связанные статьи
- BEGIN TRANSACTION (интерактивные транзакции): начало интерактивной транзакции
- COMMIT: завершите интерактивную транзакцию и сделайте все изменения постоянными
- Составная инструкция ATOMIC (неинтерактивные транзакции): выполнение нескольких инструкций SQL в виде одной атомарной транзакции с автоматической фиксацией и откатом
- Транзакции: обзор поддержки транзакций, требований и ограничений
- Режимы транзакций: подробные шаблоны и примеры для неинтерактивных и интерактивных транзакций