>[оверквотинг удален] >> UPDATE test2 SET location='arhiv' WHERE pnum=11;/*пытаемся обновить несуществующую строку*/ >> INSERT INTO test2(fam,pnum) (SELECT fam,pnum FROM test1 WHERE id =334);/*снова вставляем >> данную строку*/ >> COMMIT; >> SELECT * FROM test2 WHERE pnum=11; >> Не могу понять почему транзакция не отменяет изменения если в одном из >> запросов ошибка? > Я давно работал с SQL, но возникает вопрос, почему Вы "не нахождение > по WHERE" считаете за ошибку? Это нулевая выборка, которая может вовсе > и не рассматриваться как ошибка.А как в таком случае проверяют свои транзакции банки когда добавляют на один счёт 100р и нужно одновременно списать с другого счёта 100р, а если первая операция не прошла, то отменить все операции?
|