我目前正在学习一些关于SQL触发器的知识。我正在尝试在测试表上创建一个列,该列将显示更新行时的当前日期。列数据类型是DateTime到目前为止我有:
CREATE TRIGGER lastUpdated
ON [dbo].[ImportTest]
AFTER UPDATE
AS
BEGIN
IF NOT UPDATE(LAST_UPD)
BEGIN
SET [dbo].[ImportTest].[LAST_UPD] = CURRENT_TIMESTAMP
END
END
GO
但是,我在尝试执行时遇到以下错误:
Msg 102,Level 15,State 1,Procedure lastUpdated,29行
'dbo'附近的语法不正确。
任何帮助都将不胜感激。
答案 0 :(得分:1)
您无法更新列,例如为变量赋值。试试这个
IF NOT UPDATE(LAST_UPD)
BEGIN
UPDATE IT
SET [LAST_UPD] = CURRENT_TIMESTAMP
FROM [dbo].[ImportTest] IT
WHERE EXISTS (SELECT 1
FROM inserted i
WHERE i.somecol = it.somecol
And ...)
END