Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Мы уже разобрались с тем, как нам начать транзакцию в базах данных SQLite, а в этой записи мы разберемся с тем, как успешно завершить транзакцию в SQLite, под словом успешно стоит понимать: завершить транзакцию с подтверждением изменения. Для этих целей в СУБД SQLite реализована команда COMMIT, так же SQLite поддерживает псевдоним END, замечу, что END намного чаще используется, чем COMMIT и, аналогично, позволяет завершить транзакцию и подтвердить все изменения в базе данных SQLite.

Команда COMMIT в базах данных SQLite (оператор COMMIT в SQLite3)

Команда COMMIT в базах данных SQLite (оператор COMMIT в SQLite3)

Команда COMMIT в базах данных SQLite (оператор COMMIT в SQLite3)

Рассмотрим вторую команду управления транзакциями в базах данных SQLite. COMMIT TRANSACTION в SQLite3 позволяет подтвердить операции, выполненные внутри транзакции. Хочу обратить ваше внимание, что SQL предложение, содержащее команду BEGIN и предложение, содержащее команду COMMIT – это две разных команды для СУБД, между которыми может быть множество запросов к базе данных распределенных во времени. Оператор COMMIT в базах данных SQLite подтверждает изменения, внесенные транзакцией. Давайте взглянем на синтаксис команды COMMIT в SQLite3. Хотя я и использую термин оператор, вместо команда, позволю напомнить, что SQL операторы и команды — это разные языковые конструкции.

Синтаксис команды COMMIT в базах данных SQLite

Синтаксис команды COMMIT в базах данных SQLite

Синтаксис оператора COMMIT TRANSACTION в SQLite3 очень прост: ключевое слово COMMIT, которое можно заменить словом END, за которым идет ключевое слово TRANSACTION. SQLite3 позволяет не писать ключевое слово TRANSACTION. Давайте посмотрим на примере работу команды COMMIT TRANSACTION в базах данных SQLite3.

Пример использования оператора COMMIT в базах данных SQLite

Для примера работы COMMIT TRANSACTION в SQLite3 мы будем использовать базу данных world.db. Совет: если вы самостоятельно будете повторять пример, то выполняйте все команды по очереди, а не копируйте весь листинг целиком.

[php]

— Начинаем транзакцию

BEGIN;

— Выберем первых 10 записей из таблицы City

SELECT * FROM city LIMIT 10;

— Удаляем первую строку из таблицы city

DELETE FROM city WHERE  id = 1;

— Посмотрим на первых 10 записей

SELECT * FROM city LIMIT 10;

/* Пока вы не выполните команду COMMIT, строка не будет удалена, так как транзакция еще не подтверждена, в этом можно убедиться, --подключившись к базе данных World другим клиентом, выполнив SELECT */

COMMIT;

[/php]

На самом деле это пример ради примера, удалить первую строку из таблицы командой DELETE мы могли бы и не используя транзакции. Так же хочу заметить, что если вы попробуете установить второе соединение с базой данных World в тот момент, когда транзакция не завершена, то таблица City будет доступна только для чтения из-за свойства изоляции транзакции. А теперь, воспользовавшись командой SELECT, убедимся, что внесенные изменения вступили в силу.

[php]

— Посмотрим на первых 10 записей после подтверждения транзакции

SELECT * FROM city LIMIT 10;

[/php]

По сути, пока вы не выполните команду COMMIT, SQLite3 не внесет ни одного изменения в базу данных (не выполнит ни одну команду после оператора BEGIN). Как только вы сказали SQLite COMMIT, все изменения будут выполнены.

Возможно, эти записи вам покажутся интересными


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

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Loading Disqus Comments ...