После запуска выполнить до проверки ограничений в оракуле - PullRequest
2 голосов
/ 20 апреля 2010

У меня есть триггер после вставки / обновления в таблице T1, который получает справочные данные для Col1 из T2, выполняет некоторую работу и вставляет их в другую таблицу. Col1 является FK для таблицы T2.

Когда пользователь вставляет неправильное или несуществующее значение в Col1 и если триггер отключен, я получаю сообщение об ошибке ограничения, которое в порядке.

Но когда триггер включен и пользователь вставил неправильное значение в триггер Col1, он срабатывает и показывает сообщение об ошибке «данные не найдены».

На самом деле я ожидаю, что таблица выдаст ошибку ограничения, но триггер выбрасывает ее.

Пожалуйста, дайте мне знать ваши комментарии об этом триггерном поведении.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2010

Вы не упоминаете, используете ли вы триггеры ДО и ПОСЛЕ. Пожалуйста, проверьте документацию для порядка исполнения :

  • ДО утверждения
  • ДО строки
  • ТРУДНОСТИ
  • ПОСЛЕ строки
  • ПОСЛЕ утверждения
0 голосов
/ 20 апреля 2010

Я предполагаю, что триггер должен быть BEFORE. Он будет запущен до проверки ограничений. Если триггер повышает NO_DATA_FOUND, тогда ограничение никогда не проверяется. Если триггер отключен, он не запускается, поэтому ограничение проверяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...