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, но транзакцию не завершили.

ПРИСОЕДИНЯЙТЕСЬ
Поделиться

Кирилл Антонов

Канал для начинающего веб-разработчика. Здесь ты найдешь различные видео уроки о технологиях и программном обеспечение, которые используют веб-разработчики.



Обсуждение закрыто.