Надо дать взятку 3 чиновникам (совершить 3 операции)
Первому дал - он взял (первая операция завершена успешно)
Второму дал - он взял (вторая операция завершена успешно)
Третьему дал - а он не взял (в третьей операции ошибка)
Если есть транзакция, то ты бы мог вернуть все деньги, отданные первому и второму чиновнику (можно будет отменить первую и вторую операции)
а если нет, то денежки останутся у них (изменения, которые делали первая и вторая операции останутся в силе)
(0) По сабжу, лучше показать на примере. А лучше - на двух: последовательность операций с транзакцией и без, с демонстрацией кривизны возникающей при ошибках в середине выполнения.
Возьмем операцию перемещения товара со склада на склад. Грубо говоря, здесь ясно видны два этапа. Товар ушел с одного склада, товар пришел за другой склад. Допустим, во время прихода товара на другой склад возникла ошибка. Если у нас нету транзакции, то получилось, что товар ушел и никуда не пришел. Это плохо. Если есть транзакция, то будет отменен 1 этап и товар останется на том складе, где и был сначала. Учет не пострадал.
Пример понятен?
(0) На работе весь мозг "проели", употребляя это где надо и где не надо. Я даже распечатал из (1) и зачитываю вслух тем, кто говорит: "транзакция не прошла" или "проги сделали транзакцию с ошибкой" и т.п.
(2)+1 Отличное объяснение для "непонятливых"
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший