Часть 12.13: Объединение SQL запросов в базах данных: UNION и SELECT в SQLite
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3.В данной…
Привет, посетитель сайта 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. Совет: если вы самостоятельно будете повторять пример, то выполняйте все команды по очереди, а не копируйте весь листинг целиком.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
--Начинаем транзакцию 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; |
На самом деле это пример ради примера, удалить первую строку из таблицы командой DELETE мы могли бы и не используя транзакции. Так же хочу заметить, что если вы попробуете установить второе соединение с базой данных World в тот момент, когда транзакция не завершена, то таблица City будет доступна только для чтения из-за свойства изоляции транзакции. А теперь, воспользовавшись командой SELECT, убедимся, что внесенные изменения вступили в силу.
1 2 3 |
-- Посмотрим на первых 10 записей после подтверждения транзакции SELECT * FROM city LIMIT 10; |
По сути, пока вы не выполните команду COMMIT, SQLite3 не внесет ни одного изменения в базу данных (не выполнит ни одну команду после оператора BEGIN). Как только вы сказали SQLite COMMIT, все изменения будут выполнены.
Выберете удобный для себя способ, чтобы оставить комментарий