更新时自动停用旧记录的触发器
Posted
技术标签:
【中文标题】更新时自动停用旧记录的触发器【英文标题】:A trigger to automatically deactivate the old record upon renewal 【发布时间】:2011-10-18 19:48:25 【问题描述】:我正在更新记录。我需要创建一个触发器来自动停用旧记录。记录被更新到一个新的表中是不一样的。新插入记录和原始记录之间的值匹配 2 列,比如说 col1 和 col2
ALTER TRIGGER TR_On_Renewed_Customer
ON CustomerTable2
FOR INSERT
AS
// psudeo code
// Deactive the old record in customertable1
// if match is found between CustomerTable2 and
// CustomerTable1 based on col1 and col2, then update Active ='No'
我有点不知道如何在这个查询中使用 EXIST。
【问题讨论】:
【参考方案1】:关键是使用特殊的Inserted
表,其中包含刚刚受到导致触发器触发的INSERT
操作影响的行。
UPDATE c1
SET Active = 'No'
FROM Inserted i
INNER JOIN CustomerTable1 c1
ON i.col1 = c1.col1
AND i.col2 = c1.col2
【讨论】:
我喜欢这个查询,但我可以使用 If Exist 吗?它可以更优雅一些。谢谢你的回答,我会使用这个查询。 我不确定你所说的“更优雅”是什么意思,但我认为在这种情况下 JOIN 操作会更好。以上是关于更新时自动停用旧记录的触发器的主要内容,如果未能解决你的问题,请参考以下文章
创建一个名为stu_insert的触发器,当向学生表student中插入记录时,自动更新班级表class中的学生人数numbe