Доброго времени суток. Уважаемые знатоки, прошу совета! Сервер MariaDB 10.5, пишу простенький запрос с транзакцией где данные копируются из одной таблицы в другую и помечаются как архивные, затем удаляются из первоисточника. Суть в том, что даже работая с одной таблицей, поочерёдно выполняется код и не смотря на то, что есть попытка обновить несуществующую строку, транзакция не отменяется, а выполняется в полном объёме, что до попытки обновления, что после.SET autocommit = OFF; START TRANSACTION; DELETE FROM test2 WHERE pnum=11;/*удаляем на всякий случай*/ INSERT INTO test2(fam,pnum) (SELECT fam,pnum FROM test1 WHERE id =334);/*из test1 копируем строку в test2*/ DELETE FROM test2 WHERE pnum=11;/*удаляем копируемую строку*/ 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; Не могу понять почему транзакция не отменяет изменения если в одном из запросов ошибка?
|