Триггер обновления нескольких строк - PullRequest
1 голос
/ 19 марта 2010

Если у меня есть заявление который обновляет несколько строк, только триггер сработает только в первой или последней обновляемой строке (не знаю, какая именно). Мне нужно сделать триггер, который запускает ВСЕ записи, которые обновляются в конкретной таблице

Ответы [ 3 ]

2 голосов
/ 19 марта 2010

Предполагая, что SQL Server, триггер срабатывает только один раз за обновление, независимо от количества обновляемых строк.Если вам необходимо выполнить некоторую дополнительную логику на основе обновлений нескольких строк, вы можете получить доступ к измененным записям, просмотрев логические таблицы INSERTED и DELETED, которые доступны в контексте триггера.

0 голосов
/ 20 марта 2010

Вам просто нужно указать, должен ли ваш триггер быть выполнен «ДЛЯ КАЖДОГО РЯДА» или «ДЛЯ КАЖДОГО ЗАЯВЛЕНИЯ».Добавление одного из этих двух пунктов в определение триггера скажет СУБД, когда выполнять триггер (большинство, но не все, СУБД поддерживают его).Если вы не укажете это предложение, то СУБД использует опцию по умолчанию, которая в вашем случае кажется опцией FOR EACH STATEMENT, и поэтому ваш триггер запускает только одну для каждого предложения обновления, независимо от того, сколько строк вы обновляете1001 *

0 голосов
/ 19 марта 2010

Вы не указали базу данных ..... В Oracle можно определить триггер для запуска отдельных строк в зависимости от типа транзакции:

CREATE OR REPLACE TRIGGER BIUDR_MY_TABLE
 BEFORE INSERT OR UPDATE OR DELETE
    ON MY_TABLE
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
DECLARE
  pk   PLS_INTEGER;
BEGIN
   etc ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...