Как сослаться на недавно обновленную строку в триггере AFTER UPDATE - PullRequest
0 голосов
/ 24 декабря 2018

В триггерах AFTER DELETE и AFTER INSERT вы можете ссылаться на недавно удаленную / вставленную строку, используя OLD.desired_id и NEW.desired_id.Но как вы ссылаетесь на строку в триггере AFTER UPDATE?Например, после переключения переключателя в строке мне нужно получить идентификатор из строки, логическое значение которой я только что перевернул, например, THIS.desired_id или что-то еще?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

В INSERT FOR EACH ROW триггер new ссылается на вставленную строку.Удаленной строки нет, поэтому old бесполезен.

И наоборот, когда запускающим действием является DELETE.Тогда old ссылается на удаленную строку и new, при отсутствии вставленной строки бесполезно.

Если действие UPDATE, то и old, и new ссылаются на строку.old ссылается на строку перед изменением и new после.

Таким образом, вы можете использовать old.desired_id или new.desired_id в зависимости от версии, которую вы хотите, одну до изменения или одну после.

0 голосов
/ 24 декабря 2018

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

ALTER TRIGGER 'trigger_name_afterupdate'
ON [*db*].[*table*]
AFTER UPDATE
AS
BEGIN 
    UPDATE [*db*].[*table*]
    SET last_updated_by = SYSTEM_USER
    **(your flip switch condition goes here)**
    FROM *db*.*table* x
    WHERE EXISTS (SELECT 1 FROM inserted i WHERE i.id = x.id);
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...