我正在更新表格
表:用户(id,name,Dob,createdDate,lastUpdatedDate)
我希望在Name列中有更改时更新lastUpdatedDate。
首先我使用了更新触发器,但是在更新记录后执行
一些帮助链接建议我使用而不是更新触发器,但如果我使用它,它将不会在触发后更新我的记录。
任何解决方案?
答案 0 :(得分:0)
我找到了适合这个问题的解决方案
在更新后触发器中有两个表集,一个是已插入,另一个是已删除。 所以通过从两个表集中获取名称,我们可以将值存储在那里。如果值相同,我们将不会更新lastUpdatedDate,如果值有任何差异,那么我们将更新lastUdpatedDate
Create TRIGGER [dbo].[User__Update]
ON [dbo].[User]
AFTER Update
AS
BEGIN
SET NOCOUNT ON;
declare @AttributeValue varchar(max)
declare @OldAttributeValue varchar(max)
SELECT @AttributeValue = INSERTED.Name
FROM INSERTED
select @OldAttributeValue=Deleted.Name
FROM Deleted
if(@OldAttributeValue<>@AttributeValue)
BEGIN
IF UPDATE(Name)
BEGIN
update [User] set LastUpdatedDate=GetDate() where name =@AttributeValue
END
END
END