текст для баннера по необходимости

SQL запросы. SQL команды RELEASE и SAVEPOINT: транзакции с именем/вложенные и контрольные точки

2 Просмотры
Издатель
Рубрика 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, но транзакцию не завершили.
Категория
Изучаем SQL
Выполните вход или зарегистрируйтесь для отправки комментария.
Комментариев нет.