TGViewer
SQL Portal | Базы Данных SQL Portal | Базы Данных @sqlportal · 13.7K subscribers
Post #1697 1.64K
SQL-приём, о котором мало кто знает

Знал ли ты, что внутри транзакции можно создавать контрольные точки с помощью SAVEPOINT? Вместо сценария, где при ошибке теряется вся работа.

SAVEPOINT позволяет зафиксировать точку внутри транзакции, к которой можно откатиться. Обычный откат отменяет всю транзакцию, а откат к SAVEPOINT возвращает состояние только до этой точки.

SAVEPOINT — это как контрольные точки в трубопроводе. Если проблема возникает дальше по потоку, можно локализовать последствия, вернувшись к последней стабильной точке, не останавливая всю систему.

Следующий код откатывает всё:

BEGIN;

INSERT INTO orders VALUES (1, 'Laptop');
INSERT INTO payments VALUES (1, 'FAILED');

-- Здесь что-то пошло не так
ROLLBACK; -- Удалит И заказ, И платёж


Если добавить SAVEPOINT, можно откатиться только к последней контрольной точке:

BEGIN;

INSERT INTO orders VALUES (1, 'Laptop');
-- Создаём контрольную точку
SAVEPOINT before_payment;

INSERT INTO payments VALUES (1, 'FAILED');

-- Платёж не прошёл — откатываем только его
ROLLBACK TO SAVEPOINT before_payment;

-- Пробуем альтернативный способ оплаты
INSERT INTO payments VALUES (1, 'SUCCESS');

COMMIT;


SAVEPOINT полезен, когда стоимость полного отката слишком высокая и выгоднее переиграть только часть транзакции. Даёт более гибкое управление транзакциями, особенно в сложных сценариях.

SAVEPOINT не устраняет ошибку, а ограничивает её последствия.

👉 @SQLPortal
  • 👍 8
More from @sqlportal
  1. Oct 12, 2026Pandas: Python для повседневных задач аналитика 🐼 Загрузить файлы с неаккуратными данными…
  2. Oct 11, 2026Чтобы запросы оставались быстрыми, понятными и справлялись с ростом объёма данных, нужны х…
  3. Oct 11, 2026SQL: порядок написания ≠ порядок обработки Запрос начинается с SELECT, но логически обраба…
  4. Oct 10, 2026Какие навыки нужны дата-инженеру? В вакансиях прослеживается закономерность: на первом мес…
  5. Oct 10, 2026Бэкап есть? А если найду? 😳 👉 @SQLPortal
  6. Oct 9, 2026Горизонтальные или вертикальные столбцы: что выбрать? Оба варианта помогают сравнивать кат…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →