Триггер для автоматической деактивации старой записи при обновлении - PullRequest
0 голосов
/ 18 октября 2011

Я обновляю запись. Мне нужно создать триггер, который автоматически деактивирует старую запись. Записи обновляются в новой таблице, не то же самое. Значения между вновь вставленной записью и исходной записью совпадают на 2 столбца, скажем, col1 и col2

ALTER TRIGGER TR_On_Renewed_Customer
ON CustomerTable2
FOR INSERT
AS
// psudeo code
// Deactive the old record in customertable1 
// if match is found between CustomerTable2 and 
// CustomerTable1 based on col1 and col2, then update Active ='No'

Я немного растерялся, как использовать EXIST в этом запросе.

1 Ответ

0 голосов
/ 18 октября 2011

Ключом является использование специальной таблицы Inserted, которая содержит строки, на которые только что повлияла операция INSERT, которая вызвала срабатывание триггера.

UPDATE c1
    SET Active = 'No'
    FROM Inserted i
        INNER JOIN CustomerTable1 c1
            ON i.col1 = c1.col1
                AND i.col2 = c1.col2
...