У меня есть база данных Maximo, у которой есть структура таблицы, которую я не могу изменить. Я ищу, чтобы скопировать основной адрес электронной почты в таблицу PERSON в любое время, когда он создан или обновлен. Следующая структура описывает таблицу PERSON и EMAIL таблицыSQL Trigger для обновления другой таблицы
PERSON таблице:
PERSONID | EMAIL | ...(other irrelevant columns)...
EMAIL стол:
PERSONID | EMAILADDRESS | ISPRIMARY | ...(other irrelevant columns)...
Как вы можете видеть, две таблицы связаны на колонке ПЕРСОНА. Вот что я хотел бы сделать с помощью триггера:
Если таблица EMAIL обновлена или вставлена новая строка, я хотел бы скопировать поле EMAILADDRESS в соответствующую запись (в соответствии с PERSONID) в таблице PERSON. ЕСЛИ Поле ISPRIMARY равно 1 (1 означает первичный, 0 означает вторичный).
Я не написал много триггеров, поэтому я хочу убедиться, что я только смотрю на строки, которые обновляются или вставляются в таблицу EMAIL, и только обновляют таблицу PERSON, если есть новый/обновленный основной адрес электронной почты. Заранее благодарю за вашу помощь!
UPDATE 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
Я считаю, что триггер должен работать в любое время что-то обновляется или вставить в сообщение электронной почты Таблица.
Мне нравится, куда вы направляетесь. Система Maximo гарантирует только одну уникальную запись ISPRIMARY на PERSONID. Я согласен, что немного странно, как они это настроили, но я думаю, я понимаю, почему они это сделали. –