You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中正确创建INSERT触发器?语法错误排查

错误原因及修正方案

语法错误根源

  • 触发102报错的直接原因:INSERT对应的SELECT子句外层多了不必要的括号。T-SQL语法中SELECT后跟多字段列表时,不需要用括号将所有字段整体包裹,你当前的写法会被数据库解析为单个表达式,遇到第一个逗号就会抛出语法错误。
  • 隐藏的语法问题:日志表Logs_Table的字段名User、Table、Date、Action都是SQL Server的保留关键字,直接作为字段名使用会触发语法异常,必须用方括号[]转义。
  • 额外的语法疏漏:你当前编写的触发器代码只有BEGIN没有对应的闭合END,执行时也会报错。

修正后的完整触发器代码

CREATE TRIGGER tg_test
ON Hub
FOR INSERT
AS
BEGIN
    SET NOCOUNT ON;                 

    INSERT INTO Logs_Table ([Date], [User], [Table], [Action], Description)
        SELECT 
            CURRENT_TIMESTAMP,
            SYSTEM_USER,
            'Hub',
            'INSERT',
            CONCAT('Mat: ', i.Mat, '; Hub: ', i.Hub)
        FROM 
            INSERTED AS i;
END

优化建议

你之前声明的@sys_usr变量没有在代码中使用,可以直接删除,避免冗余代码。

内容的提问来源于stack exchange,提问作者danimille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:00:05