Oracle Trigger - обновление нескольких строк в таблице - PullRequest
0 голосов
/ 22 августа 2011

Если у меня есть триггер, который выполняется для обновлений в TableA, возникает ли проблема, если я обновляю 100 записей в TableA в одном операторе обновления? Я подозреваю, что триггер будет работать 100 раз для каждой записи. Это правильно или он будет запущен только один раз? Меня предупредили, что обновление нескольких записей в одном операторе обновления может вызвать проблему.

Ответы [ 2 ]

5 голосов
/ 22 августа 2011

Если триггер определен как FOR EACH ROW, то он будет запускать один раз для каждой обновленной строки, т.е. всего 100 раз.Если нет FOR EACH ROW, он просто выстрелит один раз.

2 голосов
/ 22 августа 2011

Триггер будет работать для каждой записи, но это не обязательно вызовет какие-либо проблемы. Конечно, это зависит от того, что делает ваш триггер.

В некоторых случаях вы можете использовать несколько триггеров

  1. триггер BEFORE UPDATE для инициализации коллекции
  2. триггер PEFORE UPDATE FOR EACH ROW для заполнения коллекции идентификаторами затронутых записей
  3. триггер AFTER UPDATE для обработки собранных идентификаторов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...