У меня есть база данных Maximo, структура таблицы которой я не могу изменить. Я пытаюсь скопировать основной адрес электронной почты в таблицу PERSON каждый раз, когда она создается или обновляется. Следующая структура описывает таблицу PERSON и EMAIL
Таблица ПЕРСОНА:
PERSONID | EMAIL | ...(other irrelevant columns)...
EMAIL таблица:
PERSONID | EMAILADDRESS | ISPRIMARY | ...(other irrelevant columns)...
Как видите, две таблицы связаны в столбце PERSONID. Вот что я хотел бы сделать триггером:
Если таблица EMAIL обновлена или вставлена новая строка, я хотел бы скопировать поле EMAILADDRESS в соответствующую запись (как связано с PERSONID) в таблице PERSON, если поле ISPRIMARY равно 1 (1 означает основной, 0 означает вторичные).
Я не написал много триггеров, поэтому хочу убедиться, что смотрю только строки, которые обновляются или вставляются в таблицу EMAIL, и обновляю таблицу PERSON только при наличии нового / обновленного основного адреса электронной почты. Заранее спасибо за вашу помощь!
ОБНОВЛЕНИЕ 1:
Посмотрев на ответ Кейда, вот триггер, который я начинаю формировать:
CREATE TRIGGER EMAIL_update ON UPDATE,INSERT AS BEGIN
UPDATE p
SET p.email = i.emailaddress
FROM dbo.PERSON as p
INNER JOIN inserted AS i ON i.PERSONID = p.PERSONID AND i.isprimary=1
END
Я считаю, что триггер должен работать каждый раз, когда что-то обновляется ИЛИ вставляется в таблицу электронной почты.