SQL запросы. SQL команды RELEASE и SAVEPOINT: транзакции с именем/вложенные и контрольные точки
Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-m…
Текстовая версия: http://zametkinapolyah.ru/zametki-o-mysql/tema-15-tranzakcii-v-sql-na-primere-bazy-dannyx-sqlite-svojstva-acid-i-urovni-izolyacii-tranzakcij-v-sqlite3.html
Паблик блога в ВК: https://vk.com/zametkinapolyah
Тематическая группа в ВК: https://vk.com/zametki_bd
Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223
SELECT * FROM City LIMIT 10;
— Создаем транзакцию с именем при помощи команды SAVEPOINT
SAVEPOINT transact1;
— Посмотрим первых 10 записей из таблицы City
SELECT * FROM City LIMIT 10;
— Удалим одну запись
DELETE FROM city WHERE id = 2;
SELECT * FROM City LIMIT 10;
— Из другого терминала:
— Посмотрим на первых 10 записей
SELECT * FROM city LIMIT 10;
— Пока вы не выполните команду RELEASE SAVEPOINT, строка не будет удалена
RELEASE transact1;
— Посмотрим на первых 10 записей после подтверждения транзакции
SELECT * FROM city LIMIT 10;
–Начинаем транзакцию с именем transact1
SAVEPOINT transact1;
— Выберем первых 10 записей из таблицы City
SELECT * FROM city LIMIT 10;
— Удаляем третью строку из таблицы city
DELETE FROM city WHERE id = 3;
— Посмотрим на первых 10 записей
SELECT * FROM city LIMIT 10;
— Пока вы не выполните команду ROLLBACK, транзакция не будет завершена, а вы будете видеть все изменения
ROLLBACK;
— Посмотрим на первых 10 записей после подтверждения транзакции, вы увидите
SELECT * FROM city LIMIT 10;
–Начинаем транзакцию с именем transact1
SAVEPOINT transact1;
— Выберем первых 10 записей из таблицы City
SELECT * FROM city LIMIT 10;
— Удаляем третью строку из таблицы city
DELETE FROM city WHERE id = 3;
— Посмотрим на первых 10 записей и увидим
SELECT * FROM city LIMIT 10;
— Пока вы не выполните команду ROLLBACK TRANSACTION TO SAVEPOINT,
— отката изменений не произойдет, и вы будете видеть все изменения
ROLLBACK TRANSACTION TO SAVEPOINT transact1;
— Посмотрим на первых 10 записей
SELECT * FROM city LIMIT 10;
— Хочу обратить ваше внимание на то, что последний запрос SELECT будет выполняться в рамках транзакции transact1, так как мы сделали откат до метки transact1, то есть отменили все запросы, начиная с SAVEPOINT transact1, но транзакцию не завершили.
Последние сообщения
127 полезных и бесплатных онлайн академий
23.04.2019
Ресурсы для objective-C программистов
21.03.2018