AUTONMOUS_TRANSACTION
является вложенной транзакцией.Он выполняет DML независимо от вызывающей транзакции.Таким образом, запрос, выданный в автономной транзакции, не увидит никаких незафиксированных изменений во внешней транзакции.Вот почему вы не видите своего сообщения об ошибке: недопустимое состояние существует только в незафиксированных изменениях транзакции.
Очевидно, что вы используете AUTONMOUS_TRANSACTION
, чтобы избежать ошибки в таблице мутаций.Однако лучшим решением будет использование триггера COMPOUND DML: используйте FOR EACH ROW
для хранения изменений в массиве, а затем проверьте их на отсутствие перекрытий на этапе оператора AFTER
. Узнайте больше .