Транзакция — это единица работы, выполняемая с базой данных. Транзакции — это единицы или последовательности работы, выполняемые в логическом порядке, либо вручную пользователем, либо автоматически какой-либо программой базы данных.
Транзакция — это распространение одного или нескольких изменений в базе данных. Например, если вы создаете, обновляете или удаляете запись из таблицы, вы выполняете транзакцию для таблицы. Важно контролировать транзакции для обеспечения целостности данных и обработки ошибок базы данных.
Практически вы объедините множество SQLite-запросов в группу и выполните их все вместе как часть транзакции.
Свойства сделок
Транзакции имеют следующие четыре стандартных свойства, на которые обычно ссылается аббревиатура ACID.
-
Атомарность — гарантирует, что все операции внутри рабочего блока успешно завершены; в противном случае транзакция прерывается в точке сбоя, а предыдущие операции возвращаются в прежнее состояние.
-
Согласованность — Гарантирует, что база данных корректно меняет состояния при успешной фиксации транзакции.
-
Изоляция — позволяет транзакциям работать независимо друг от друга и быть прозрачными друг для друга.
-
Долговечность — Гарантирует, что результат или результат совершенной транзакции сохраняется в случае сбоя системы.
Атомарность — гарантирует, что все операции внутри рабочего блока успешно завершены; в противном случае транзакция прерывается в точке сбоя, а предыдущие операции возвращаются в прежнее состояние.
Согласованность — Гарантирует, что база данных корректно меняет состояния при успешной фиксации транзакции.
Изоляция — позволяет транзакциям работать независимо друг от друга и быть прозрачными друг для друга.
Долговечность — Гарантирует, что результат или результат совершенной транзакции сохраняется в случае сбоя системы.
Контроль транзакций
Ниже приведены следующие команды, используемые для управления транзакциями:
-
BEGIN TRANSACTION — начать транзакцию.
-
COMMIT — для сохранения изменений вы также можете использовать команду END TRANSACTION .
-
ROLLBACK — для отката изменений.
BEGIN TRANSACTION — начать транзакцию.
COMMIT — для сохранения изменений вы также можете использовать команду END TRANSACTION .
ROLLBACK — для отката изменений.
Команды управления транзакциями используются только с командами DML INSERT, UPDATE и DELETE. Их нельзя использовать при создании таблиц или их удалении, поскольку эти операции автоматически фиксируются в базе данных.
Команда НАЧАЛО СДЕЛКИ
Транзакции могут быть начаты с использованием BEGIN TRANSACTION или просто BEGIN. Такие транзакции обычно сохраняются до следующей команды COMMIT или ROLLBACK. Тем не менее, транзакция также будет ROLLBACK, если база данных закрыта или если произошла ошибка. Ниже приведен простой синтаксис для запуска транзакции.
BEGIN; or BEGIN TRANSACTION;
Команда COMMIT
Команда COMMIT — это команда транзакций, используемая для сохранения изменений, вызванных транзакцией, в базу данных.
Команда COMMIT сохраняет все транзакции в базе данных с момента последней команды COMMIT или ROLLBACK.
Ниже приведен синтаксис команды COMMIT.
COMMIT; or END TRANSACTION;
Команда ROLLBACK
Команда ROLLBACK — это команда транзакций, используемая для отмены транзакций, которые еще не были сохранены в базе данных.
Команду ROLLBACK можно использовать только для отмены транзакций с момента выполнения последней команды COMMIT или ROLLBACK.
Ниже приведен синтаксис команды ROLLBACK.
ROLLBACK;
пример
Рассмотрим таблицу COMPANY со следующими записями.
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Теперь давайте начнем транзакцию и удалим записи из таблицы, имеющие возраст = 25. Затем с помощью команды ROLLBACK отмените все изменения.
sqlite> BEGIN; sqlite> DELETE FROM COMPANY WHERE AGE = 25; sqlite> ROLLBACK;
Теперь, если вы проверите таблицу COMPANY, она все еще имеет следующие записи —
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Давайте запустим еще одну транзакцию и удалим записи из таблицы, имеющие возраст = 25, и, наконец, мы используем команду COMMIT, чтобы зафиксировать все изменения.
sqlite> BEGIN; sqlite> DELETE FROM COMPANY WHERE AGE = 25; sqlite> COMMIT;
Если вы сейчас проверите таблицу КОМПАНИИ по-прежнему имеет следующие записи —