用于在触发器中插入的SQL无效语法

时间:2017-04-27 18:55:11

标签: sql-server tsql database-trigger

尝试编写测试触发器,但显然存在语法错误。

我的SQL:

CREATE TRIGGER [dbo].[TR_TRIGGER_TEST] 
ON [dbo].[CP_TEST] 
AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;

    INSERT INTO CP_CHECK (CHECK) VALUES ('Y');
END
GO

我收到此错误:

  

Msg 156,Level 15,State 1,Procedure TR_TRIGGER_TEST,Line 7
  关键字' CHECK'附近的语法不正确。

我尝试过几种不同的格式,但没有找到金票。有什么建议? CP_CHECK表格包含IDCHECKupdated_atcreated_at列。

1 个答案:

答案 0 :(得分:2)

将语句写为

CP_CHECK (`CHECK`) VALUES ('Y');

保留关键字是保留的,所以你需要以某种方式逃避它。

<强> - 编辑 -
正如@GurV指出的那样,自SQL Server以来,您可以使用方括号[]来转义关键字CHECK,如

CP_CHECK ([CHECK]) VALUES ('Y');