Триггер в одном столбце должен обновить значение другого столбца в разных таблицах
Я новичок в sql. Я использую sql server management studio 2008 R2 и мне нужна помощь. У меня две таблицы
tblProject ProjectID BeginDate EndDate
1. 2013-03-20 2013-03-30
2. 2013-04-10 ........
3. 2014-03-10 .....
tblProjectMembers MemberID ProjectID MemberSince MemberUntil
1. 1 2013-03-20 2013-03-30
2. .... .......... ..........
Я хочу создать триггер для столбца EndDate, поэтому при вставке tblProject.EndDate триггер должен обновить столбец MemberUntil и прервать членство для существующих членов. (Примечание: некоторые участники могут покинуть проект раньше, до даты окончания, но некоторые из них находятся там до конца проекта).
Спасибо,
2 ответа
Предполагая, что вы хотите действовать только в первый раз EndDate
изменен с того, чтобы быть NULL
не-NULL
, триггер будет что-то вроде:
CREATE TRIGGER T_tblProject_U
AFTER UPDATE
AS
UPDATE
pm
SET
MemberUntil = i.EndDate
FROM
inserted i
inner join
deleted d
on
i.ProjectID = d.ProjectID and
i.EndDate is not null and
d.EndDate is null
inner join
tblProjectMember pm
on
i.ProjectID = pm.ProjectID
WHERE
pm.MemberUntil is null
Если у вас есть дополнительная логика, которую вы хотите применить, например, если EndDate
установлен в NULL
снова или обновляется до другого значения, триггер может стать более сложным.
Для получения информации о inserted
а также deleted
см. раздел Использование вставленных и удаленных таблиц.
create or replace trigger xyz
after insert of EndDate on tblProject for each row
begin
update tblProjectMembers set
MemberUntil = (select :new.EndDate from tblProject where tblProjectMembers.ProjectID = tblProject.ProjectID);
exception when others then
null;
end;
/