TGViewer
Соловьев дампает лог... Соловьев дампает лог... @sol_mentor · 704 subscribers
Post #112 916
Выше уже разобрал проблему транзакции внутри транзакции 🤣
Окей, а что тогда делать, если мне нужно откатить только часть операций, а не всю транзакцию целиком?

Вот тут и начинается разговор про SAVEPOINT.

SAVEPOINT — это точка сохранения внутри текущей транзакции.
Не новая транзакция.
Не отдельный независимый COMMIT.
Не «вложенная транзакция» в бытовом смысле.

Это просто метка, к которой можно откатиться, если что-то пошло не так.

Пример:

BEGIN;

INSERT INTO users(id, name) VALUES (1, 'Alice');

SAVEPOINT s1;
INSERT INTO orders(id, user_id) VALUES (10, 1);

-- что-то пошло не так
ROLLBACK TO SAVEPOINT s1;

COMMIT;


Что здесь произошло:

• пользователя вставили
• дошли до SAVEPOINT s1
• попробовали вставить заказ
• поняли, что дальше что-то сломалось
• откатились не всей транзакцией, а только до SAVEPOINT

То есть изменения до SAVEPOINT остались, а изменения после него откатились.

И вот тут очень важно не путать термины.

ROLLBACK TO SAVEPOINT — это не откат внутренней транзакции
Это частичный откат в рамках всё той же одной внешней транзакции

А значит:

COMMIT всё равно один — у внешней транзакции
• граница atomicity всё равно одна — у внешней транзакции
SAVEPOINT не живёт отдельно и не фиксируется сам по себе

Проще говоря:

нужен частичный откат внутри текущей логики — нужен SAVEPOINT


Честно признаюсь SAVEPOINT я не юзал в проде, тыкал когда изучал SQL. Не могу прям советовать, мне кажется это для супер специфичных ситуаций и я бы его избегал всеми способами. Запомни его на случай собеса, если что флексанешь 🐺
  • 🔥 12
More from @sol_mentor
  1. Sep 19, 2026Post #131
  2. Sep 11, 2026Post #130
  3. Sep 10, 2026Залетай на стрим, буду рассказывать про Кипр (чуть-чуть). Буду рад твоим вопросам и поддер…
  4. Sep 6, 2026Давеча опять рассказали историю, как чел — причём с реальным сильным опытом — не смог прой…
  5. Sep 1, 2026Сегодня День знаний и я подготовил особенный подарок. Если ты хочешь получить офер в этом…
  6. Aug 31, 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 →