SQL

Везде ли нужны транзакции в СУБД

Когда их нужно ставить, а когда необязательно?
На примере интернет-магазина.
Дмитрий ...
Дмитрий ...
1 675
Обычно их используют когда действий с базой несколько и они логически сгруппированы. Если просто добавить строку в базу то смысла делать транзакцию не особо.
ОС
Олег Соложенкин
74 422
Лучший ответ
Не везде и не всегда они прямо вот совсем нужны, но возьми себе за правило работать в транзакциях и при возникновении исключений их аккуратно отменять. В этом деле лучше передбеть, чем недобдеть.
Дмитрий Перов
Дмитрий Перов
93 243
Александр Нагорный не здороваешся никогда, огорчил чем?
1. совет Jurijus Zaksas очень не плох.
2. Транзакции по своему смыслу обязательны только там, где есть последовательность действий, которая должна выполниться ЦЕЛИКОМ, для отката ее частичного выполнения в случае возникновения ошибок в процессе ее выполнения или возникновения иных обстоятельств не позволяющих завершить ее (последовательности) выполнение.
Пример у вас есть магазин, пришел покупатель и он совершает покупку - покупка это последовательность действий
1. покупатель отдает деньги
2. продавец принимает деньги
3. продавец передает товар покупателю
4. покупатель принимает товар от покупателя
5. продавец вышвыривает покупателя вместе с товаром из магазина и забывает о нем и гарантийных обязательствах, которые активно втюхивал покупателю за отдельную плату :)
Кроме 5 пункта-шутки в котором только доля шутки, при возникновении проблем на любом этапе покупка должна быть отменена, а значит все предыдущие шаги, уже выполненные должны быть откачены.
Например, покупатель заметил дефект товара, тогда он отказывается его принимать, а значит товар возвращается продавцу, у него +1 по товару - откат 3 пункта,
Продавец скрипя сердцем производит возврат денежных средств, проклиная наблюдательность покупателя, кассовый баланс минусуется на стоимость товара - откат пункта 2.
А сумма возвращается покупателю, - откат операции 1.
Естественно последовательность действий сама может выглядеть иначе и конкретно тут они порядок их следования может быть иной.
НО или они все успешно проходят и транзакция комитится (помечается как успешно завершенная), или все изменения произведенные в процессе выполнения откатываются.
Дмитрий ... Назовите мне хоть один случай, когда транзакции не нужны. По вашему примеру я понятия не имею где их не использовать. Ведь в каждом действии нужна последовательность, конечно.