创建触发器错误:'dbo'附近的语法错误

时间:2015-11-13 08:09:12

标签: sql sql-server triggers

我目前正在学习一些关于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'附近的语法不正确。

任何帮助都将不胜感激。

1 个答案:

答案 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