Установка флага в исходной таблице при вставке записи в целевую таблицу

#sql-server #sql-server-2014

#sql-сервер #sql-server-2014

Вопрос:

Я хотел бы установить флаг в исходной таблице, когда запись вставляется в целевую таблицу.

Пример: Исходная таблица:

 Name company flag
AAA XXXX 0
BBB YYYY 0
 

Как только в целевой таблице появятся данные

 ID name company

    1 AAA XXXX
 

Исходная таблица :

 Name company flag
AAA XXXX 1
 

В принципе, я хочу проверить, был ли сгенерирован идентификатор в целевой таблице, если он генерируется, то сделайте флаг 1 в источнике.
Я могу сделать это в sql или в execute sql task. все в порядке.

Как я могу это сделать? любая помощь приветствуется.

Ответ №1:

Вам нужно UPDATE :

 UPDATE A
SET A.flag = 1
FROM dbo.SourceTable A
INNER JOIN dbo.TargetTable B
    ON a.Name = B.Name
    AND A.company = B.company
WHERE A.flag = 0;
 

Комментарии:

1. Вероятно, внутри триггера.. Писал аналогичный UPDATE запрос с аналогичным Where предложением 😉 1

2. @Prdp Да, если это должно быть «on-line», тогда AFTER INSERT триггер в целевой таблице будет правильным. В противном случае достаточно просто запустить это UPDATE в определенное фиксированное время