Тема 9: Команды управления транзакциями в базах данных SQLite3 (TCL операторы)

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Мы подошли к такой важной теме, как команды управления транзакциями в SQLite. Тема №9: Команды управления транзакциями в базах данных SQLite3 (TCL операторы) будет более полезна для тех, кто уже знает о том, что такое транзакция в базе данных и для чего она используется по той простой причине, что в записях этой темы мы быстро, но подробно рассмотрим синтаксис SQL операторов TCL в SQLite3, но не будем останавливаться на вышеупомянутых вопросах.

Команды управления транзакциями в базах данных SQLite3 (TCL операторы)

Команды управления транзакциями в базах данных SQLite3 (TCL операторы)

С одной стороны: несправедливо к новичкам рассказывать о командах управления транзакциями в SQLite, не рассказав о том, что такое транзакция и для чего она нужна. С другой: по моему мнению, у человека должно сложиться объемное впечатление о языке для его дальнейшего изучения и понимания, а команды управления транзакциями являются частью языка SQL, реализованного в SQLite3, поэтому выбросить и пропустить TCL операторы я не могу. Если возникнут вопросы — не бойтесь задать их в комментариях к этой записи. Надеюсь, что уже скоро руки дойдут до полноценной публикации о транзакциях в SQLite3.


Команды управления транзакциями в SQL. TCL операторы в SQL

Ранее мы уже коротко говорили о командах в SQL, где были перечислены команды управления транзакциями в SQL, но ничего плохого не будет в том, если мы немного повторим о том, какие TCL операторы есть в SQL, а уже потом начнем рассматривать команды управления транзакциями в SQLite. Тут мне необходимо сделать примечание для тех, кто не читал и не просматривал более ранние публикации: среди русскоязычных разработчиков и администраторов баз данных часто используется термин SQL оператор вместо SQL команда, что на самом деле неправильно, в своих записях, если я буду использовать термин SQL оператор, за которым будет стоять та или иная команда, то обязательно буду давать пояснения.

Давайте посмотрим на SQL операторы TCL и какие команды определения данных есть в SQL:

  • COMMIT – SQL команда COMMIT применяет транзакцию;
  • ROLLBACK – SQL команда ROLLBACK откатывает транзакцию;
  • SAVEPOINT – данная SQL команда делит транзакцию на более мелкие части.

Обращу ваше внимание на то, что внутри транзакции может быть выполнено несколько других SQL команд и подтвердятся эти команды только после того, как будет выполнена команда COMMIT. Не пугайтесь, если вы еще ничего не знаете о транзакциях, у нас будет отдельная тема, в которой мы подробно про них поговорим. Например, мы начали транзакцию, в которой: мы создали таблицу при помощи команды CREATE; добавили туда много-много данных при помощи команды INSERT; заметили, что при добавление данных в базу данных допустили ошибку и воспользовались командой UPDATE для обновления данных в таблице; потом пересмотрели таблицу и воспользовались командой ALTER, например для добавления столбца в таблицу; а если будут лишние строки, то внутри этой же транзакции мы удалим их командой DELETE, потом вывели данные из базы данных командой SELECT; поняли, что нам эта таблица не нужна, но команду DROP для удаления таблицы мы использовать не будем, так есть SQL команда управления транзакциями ROLLBACK, которая просто отменит все предыдущие операции с базой данных внутри транзакции.

Описанное выше поведение справедливо для любой СУБД. Вы уже наверное заметили из описания, что внутри транзакции можно выполнять любые команды SQL языка: команды манипуляции данными выполняются внутри транзакции, команды определения данных так же успешно выполняются, единственное, я не могу сказать ничего про команды определения доступа к данным, так как ни разу не пробовал их использовать, когда запущена транзакция.

Команды управления транзакциями в SQLite. TCL операторы в SQLite

Давайте рассмотрим TCL операторы в SQLite и посмотрим, какие команды SQLite отвечают за управление транзакциями в базах данных:

  • Команда BEGIN TRANSACTION — запускает транзакцию в базе данных SQLite;
  • Команда COMMIT – данная команда подтверждает транзакцию в базе данных SQLite;
  • Команда ROLLBACK – команда ROLLBACK откатывает транзакцию в базе данных SQLite так, как будто никаких изменений не произошло;
  • SAVEPOINT – команда делит транзакцию на более мелкие части, в базах данных SQLite эта команда используется еще и для того, чтобы начать транзакцию.

Мы коротко перечислили команды управления транзакциями в базах данных SQLite и посмотрели на то, какие SQL операторы TCL реализованы в SQLite3.  Следующие четыре записи познакомят вас с синтаксисом и некоторыми особенностями команд управления транзакциями в SQLite3.

Текст комментария: