База данных WordPress сайта
Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Продолжаем разговор о…
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Мы уже разобрались с тем, как нам начать транзакцию в базах данных SQLite, а в этой записи мы разберемся с тем, как успешно завершить транзакцию в SQLite, под словом успешно стоит понимать: завершить транзакцию с подтверждением изменения. Для этих целей в СУБД SQLite реализована команда COMMIT, так же SQLite поддерживает псевдоним END, замечу, что END намного чаще используется, чем COMMIT и, аналогично, позволяет завершить транзакцию и подтвердить все изменения в базе данных SQLite.
Команда COMMIT в базах данных SQLite (оператор COMMIT в SQLite3)
Содержание статьи:
Рассмотрим вторую команду управления транзакциями в базах данных SQLite. COMMIT TRANSACTION в SQLite3 позволяет подтвердить операции, выполненные внутри транзакции. Хочу обратить ваше внимание, что SQL предложение, содержащее команду BEGIN и предложение, содержащее команду COMMIT – это две разных команды для СУБД, между которыми может быть множество запросов к базе данных распределенных во времени. Оператор COMMIT в базах данных SQLite подтверждает изменения, внесенные транзакцией. Давайте взглянем на синтаксис команды COMMIT в SQLite3. Хотя я и использую термин оператор, вместо команда, позволю напомнить, что SQL операторы и команды — это разные языковые конструкции.
Синтаксис команды COMMIT в базах данных SQLite
Синтаксис оператора COMMIT TRANSACTION в SQLite3 очень прост: ключевое слово COMMIT, которое можно заменить словом END, за которым идет ключевое слово TRANSACTION. SQLite3 позволяет не писать ключевое слово TRANSACTION. Давайте посмотрим на примере работу команды COMMIT TRANSACTION в базах данных SQLite3.
Для примера работы 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, все изменения будут выполнены.
Выберете удобный для себя способ, чтобы оставить комментарий