我是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并破坏现有成员的成员资格。 (注意:有些成员可以在结束日期之前提前离开项目..但是其中一些成员在那里直到结束项目)。
谢谢,
答案 0 :(得分:0)
假设您只想在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
的信息,请参阅Use the inserted and deleted Tables
答案 1 :(得分:-1)
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;
/