Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Databricks SQL
Фиксирует текущую интерактивную транзакцию, делая все изменения во всех измененных таблицах постоянными. Сведения о требованиях и шаблонах использования для интерактивных транзакций см. в разделе "Интерактивные транзакции".
Синтаксис
COMMIT [ TRANSACTION | WORK ]
Параметры
Это выражение не имеет параметров.
Примечания
- Если активная транзакция
COMMITотсутствует, выполнение приводит к ошибке NO_ACTIVE_TRANSACTION . - При сбое
COMMITтранзакция прерывается, и необходимо явно запуститьROLLBACK, чтобы сбросить состояние транзакции перед началом новой транзакции. Распространенные причиныCOMMITсбоев включают конфликты записи с другими параллельными транзакциями. - Для выполнения этой инструкции необходимо иметь активную транзакцию и соответствующие разрешения для всех объектов, считываемых или измененных в транзакции.
Примеры
В следующих примерах показано, как зафиксировать интерактивные транзакции.
Базовая транзакция
Запустите каждую инструкцию отдельно.
BEGIN TRANSACTION;
-- Insert a new record
INSERT INTO my_table VALUES (1, 'test');
-- Update records in another table
UPDATE another_table
SET value = 'updated'
WHERE id = 5;
-- Commit all changes in both tables atomically
COMMIT TRANSACTION;
Чтение собственных записей
Запустите каждую инструкцию отдельно.
BEGIN TRANSACTION;
-- Insert new data
INSERT INTO customers VALUES (101, 'New Customer');
-- Update the newly inserted data
UPDATE customers SET name = 'Updated Customer Name' WHERE id = 101;
-- Query sees the updated value within the transaction
SELECT name FROM customers WHERE id = 101;
-- Returns 'Updated Customer Name'
-- Commit makes changes visible to other transactions
COMMIT;
Обработка сбоя фиксации
При сбое 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 (интерактивные транзакции): начало интерактивной транзакции
- ROLLBACK: откат интерактивной транзакции и отмена всех изменений
- Составная инструкция ATOMIC (неинтерактивные транзакции): выполнение нескольких инструкций SQL в виде одной атомарной транзакции с автоматической фиксацией и откатом
- Транзакции: обзор поддержки транзакций, требований и ограничений
- Режимы транзакций: подробные шаблоны и примеры для неинтерактивных и интерактивных транзакций