Найти в Дзене
ГАУС IT

Коротко о транзакции в SQL

Транзакция - это неделимая с точки зрения воздействие на бд последовательность операторов манипулирование данными приводящие к одному из двух возможных результатов: успешно или откат Свойства транзакций Транзакция в СУБД должна обладать свойствами: Все действия с данными в транзакции должны быть либо подтверждены, либо отменены По окончании транзакции данные либо остаются неизменными, либо измененные данные будут удовлетворять ограничениям целостности, правилам (rules) и другим критериям согласованности данных Транзакции должны выполнятся автономно и независимо от других транзакций. Существует несколько уровней изоляции После успешной фиксации транзакции возврат к прежнему состоянию данных невозможен. Это требование не выполняется для вложенных транзакций Синтаксис BEGIN; --запрос COMMIT; START TRANSACTION; --запрос COMMIT; Команда COMMIT Команда COMMIT — это команда транзакций, используемая для сохранения изменений, вызванных транзакцией, в базу данных. Команда COMMIT сохраняет все
Оглавление

Транзакция - это неделимая с точки зрения воздействие на бд последовательность операторов манипулирование данными приводящие к одному из двух возможных результатов: успешно или откат

Свойства транзакций

Транзакция в СУБД должна обладать свойствами:

  • Атомарность

Все действия с данными в транзакции должны быть либо подтверждены, либо отменены

  • Согласованность

По окончании транзакции данные либо остаются неизменными, либо измененные данные будут удовлетворять ограничениям целостности, правилам (rules) и другим критериям согласованности данных

  • Изолированность

Транзакции должны выполнятся автономно и независимо от других транзакций. Существует несколько уровней изоляции

  • Устойчивость

После успешной фиксации транзакции возврат к прежнему состоянию данных невозможен. Это требование не выполняется для вложенных транзакций

Синтаксис

  • SQLite и PostgreSQL
BEGIN;
--запрос
COMMIT;
  • MySQL
START TRANSACTION;
--запрос
COMMIT;

Команда COMMIT

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

Команда COMMIT сохраняет все транзакции в базе данных с момента последней команды COMMIT или ROLLBACK.

Команда ROLLBACK

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

Эта команда может использоваться только для отмены транзакций с момента выполнения последней команды COMMIT или ROLLBACK.

Команда SAVEPOINT

SAVEPOINT — это точка в транзакции, когда вы можете откатить транзакцию до определенной точки без отката всей транзакции.

Синтаксис команды SAVEPOINT показан ниже.

SAVEPOINT SAVEPOINT_NAME;

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

Синтаксис для отката к SAVEPOINT показан ниже.

ROLLBACK TO SAVEPOINT_NAME;

Ниже приведен пример, в котором вы планируете удалить три разные записи из таблицы CUSTOMERS. Вы хотите создать SAVEPOINT перед каждым удалением, чтобы вы могли в любой момент выполнить ROLLBACK для любого SAVEPOINT, чтобы вернуть соответствующие данные в исходное состояние.

Команда RELEASE SAVEPOINT

Команда RELEASE SAVEPOINT используется для удаления созданной вами SAVEPOINT.

Синтаксис команды RELEASE SAVEPOINT выглядит следующим образом.

RELEASE SAVEPOINT SAVEPOINT_NAME;

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

Команда SET TRANSACTION

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

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

#it #транзакции #SQl #с нуля