我有一个包含3个字段的表[ID,Name,LastUpdated] LastUpdated的默认值为“GetDate(),因此在添加新记录时会自动填充。
当我在TABLE上运行UPDATE时,我希望将此字段重置为当前的GetDate()。
CREATE TRIGGER dbo.Table1_Updated
ON dbo.Table1
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.Table1 SET LastUpdated = GETDATE()
END
GO
但是因为我没有WHERE子句,所有记录都会更新。
问题:
我在哪里可以获得UPDATE触发器上更新记录的ID值?
我是否正在更新Trigger中的表字段,重新调用新的Trigger事件(等等)?
答案 0 :(得分:25)
从'INSERTED'开始,表INSERTED对INSERT,UPDATE触发器都是通用的。
CREATE TRIGGER dbo.Table1_Updated
ON dbo.Table1
FOR INSERT, UPDATE /* Fire this trigger when a row is INSERTed or UPDATEd */
AS BEGIN
UPDATE dbo.Table1 SET dbo.Table1.LastUpdated = GETDATE()
FROM INSERTED
WHERE inserted.id=Table1.id
END
答案 1 :(得分:1)
Update table1
set LastUpdated = getdate()
from inserted i, table1 a
where i.pk1 = a.pk1
答案 2 :(得分:0)
CREATE TRIGGER dbo.refreshModifyDate
ON tStoreCategoriesImages
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
update t set t.ModifyDate = getdate() from tStoreCategoriesImages t
inner join inserted i on i.ID = t.ID
END
GO