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

SQL插入时修改inserted表空值的触发器编写问题

问题原因
  • SQL Server 触发器中的inserted是只读系统临时表,仅用于读取触发时的新写入数据,不支持直接修改表内字段值,这就是你运行代码报错的核心原因
  • 你当前的变量赋值写法仅支持单行插入场景,一次性插入多行数据时只能读取到最后一行的SECUENCIA和ID_PERSONA值,会出现逻辑错误
  • 声明@ID_PERSONA时VARCHAR未指定长度,默认长度为1,会导致字段值被截断
修复方案

instead of insert触发器需要手动完成最终写入逻辑,直接读取inserted数据处理后插入目标表即可,参考代码如下:

ALTER TRIGGER [trigger1] on [dbo].[table]
INSTEAD OF INSERT
AS
BEGIN
    -- 请将下方的[其余字段名]替换为你的表中除SECUENCIA、ID_PERSONA外的其余实际字段
    INSERT INTO [dbo].[table] (SECUENCIA, ID_PERSONA, [其余字段名])
    SELECT 
        ISNULL(SECUENCIA, NEXT VALUE FOR SEQ_BIOINTEG),
        ID_PERSONA,
        [其余对应字段]
    FROM inserted
END
注意事项
  • 插入语句的字段列表和SELECT后的字段顺序要完全对应
  • 该写法支持批量插入操作,不会出现多行插入处理异常的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:24:01