Когда их нужно ставить, а когда необязательно?
На примере интернет-магазина.
SQL
Везде ли нужны транзакции в СУБД
Обычно их используют когда действий с базой несколько и они логически сгруппированы. Если просто добавить строку в базу то смысла делать транзакцию не особо.
Не везде и не всегда они прямо вот совсем нужны, но возьми себе за правило работать в транзакциях и при возникновении исключений их аккуратно отменять. В этом деле лучше передбеть, чем недобдеть.
Александр Нагорный
не здороваешся никогда, огорчил чем?
1. совет Jurijus Zaksas очень не плох.
2. Транзакции по своему смыслу обязательны только там, где есть последовательность действий, которая должна выполниться ЦЕЛИКОМ, для отката ее частичного выполнения в случае возникновения ошибок в процессе ее выполнения или возникновения иных обстоятельств не позволяющих завершить ее (последовательности) выполнение.
Пример у вас есть магазин, пришел покупатель и он совершает покупку - покупка это последовательность действий
1. покупатель отдает деньги
2. продавец принимает деньги
3. продавец передает товар покупателю
4. покупатель принимает товар от покупателя
5. продавец вышвыривает покупателя вместе с товаром из магазина и забывает о нем и гарантийных обязательствах, которые активно втюхивал покупателю за отдельную плату :)
Кроме 5 пункта-шутки в котором только доля шутки, при возникновении проблем на любом этапе покупка должна быть отменена, а значит все предыдущие шаги, уже выполненные должны быть откачены.
Например, покупатель заметил дефект товара, тогда он отказывается его принимать, а значит товар возвращается продавцу, у него +1 по товару - откат 3 пункта,
Продавец скрипя сердцем производит возврат денежных средств, проклиная наблюдательность покупателя, кассовый баланс минусуется на стоимость товара - откат пункта 2.
А сумма возвращается покупателю, - откат операции 1.
Естественно последовательность действий сама может выглядеть иначе и конкретно тут они порядок их следования может быть иной.
НО или они все успешно проходят и транзакция комитится (помечается как успешно завершенная), или все изменения произведенные в процессе выполнения откатываются.
2. Транзакции по своему смыслу обязательны только там, где есть последовательность действий, которая должна выполниться ЦЕЛИКОМ, для отката ее частичного выполнения в случае возникновения ошибок в процессе ее выполнения или возникновения иных обстоятельств не позволяющих завершить ее (последовательности) выполнение.
Пример у вас есть магазин, пришел покупатель и он совершает покупку - покупка это последовательность действий
1. покупатель отдает деньги
2. продавец принимает деньги
3. продавец передает товар покупателю
4. покупатель принимает товар от покупателя
5. продавец вышвыривает покупателя вместе с товаром из магазина и забывает о нем и гарантийных обязательствах, которые активно втюхивал покупателю за отдельную плату :)
Кроме 5 пункта-шутки в котором только доля шутки, при возникновении проблем на любом этапе покупка должна быть отменена, а значит все предыдущие шаги, уже выполненные должны быть откачены.
Например, покупатель заметил дефект товара, тогда он отказывается его принимать, а значит товар возвращается продавцу, у него +1 по товару - откат 3 пункта,
Продавец скрипя сердцем производит возврат денежных средств, проклиная наблюдательность покупателя, кассовый баланс минусуется на стоимость товара - откат пункта 2.
А сумма возвращается покупателю, - откат операции 1.
Естественно последовательность действий сама может выглядеть иначе и конкретно тут они порядок их следования может быть иной.
НО или они все успешно проходят и транзакция комитится (помечается как успешно завершенная), или все изменения произведенные в процессе выполнения откатываются.
Дмитрий ...
Назовите мне хоть один случай, когда транзакции не нужны. По вашему примеру я понятия не имею где их не использовать. Ведь в каждом действии нужна последовательность, конечно.
Похожие вопросы
- Добрый день! Нужен взгляд специалиста в области СУБД. Буду создавать базу данных комплектующих пк.
- Система Управления Базой Данных (СУБД или СУРБД) - Я понимаю. Сервер - понимаю. А что такое Сервер Базы Данных???
- Вопросы по СУБД
- Зачем нужны primary key и foreign key?
- Почему так нужен mysql?
- Зачем нужны схемы (public) в postgresql?
- Вопрос к IT-шникам, расскажите про SQL Сколько времени нужно что бы ним овладеть? Для чего он нужен QA-ям ?
- Нужна помощь по курсовой. Тема Базы данных
- Зачем нужен FOREIGN KEY, если...
- Так ли обязательно знание английского? Везде он нужен? Где не нужен или достаточно базового-среднего уровня?