TGViewer
SQL Portal | Базы Данных SQL Portal | Базы Данных @sqlportal · 13.7K subscribers
Post #2080 977
SQL-фишка, о которой знают далеко не все

А вы знали, что внутри transaction можно создавать контрольные точки с помощью SAVEPOINT? Обычный ROLLBACK отменяет всю transaction. А 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;


Теперь можно откатить только неудачную часть transaction и продолжить работу с последней безопасной точки.

SAVEPOINT особенно полезен в сложных операциях, где полный откат и повторное выполнение всей transaction обходятся слишком дорого.

SAVEPOINT не предотвращает ошибку. Он просто помогает не откатывать всю работу из-за одной неудачной операции.

👉 @SQLPortal
  • 👍 5
More from @sqlportal
  1. Oct 5, 2026Знатоки SQL: в каких случаях стоит использовать код A, а в каких — код B? 👉 @SQLPortal
  2. Oct 5, 2026Один из лучших ресурсов по производительности SQL: use-the-index-luke.com 👉 @SQLPortal
  3. Oct 4, 2026Microsoft представила обновления SQL на SQLCon Barcelona 2026 Среди главных направлений —…
  4. Oct 4, 20266 инструментов в закладки бэкенд-разработчику • Hoppscotch — тестирование API и просмотр о…
  5. Oct 3, 2026Post #2122
  6. Oct 3, 2026Вопрос по SQL Посмотрите на запрос: как думаете, какой результат он вернёт и почему? 👉 @S…
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 →