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

SQL Server触发器如何按条件赋值变量并向目标表插入不同数据

解决方案

你原有触发器的变量赋值写法仅支持Datatable2单次插入1行的场景,一旦批量插入多条数据就会出现异常。建议改用INSERT INTO ... SELECT结构结合CASE WHEN条件判断实现需求,同时兼容批量插入场景,修改后代码如下:

CREATE TRIGGER TRIGGER1
ON Datatable2
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;
    INSERT INTO datatable1 (Column1, Column2)
    SELECT 
        CASE
            WHEN ins.Column1 = 1 AND ins.Column2 IN (0,1) THEN '123'
            WHEN ins.Column1 = 0 AND ins.Column2 = 1 THEN '456'
            -- 可在此处新增其他条件分支,也可添加ELSE指定未匹配场景的默认值
        END,
        ins.Column999
    FROM INSERTED ins;
END

逻辑说明

  • CASE WHEN会逐行匹配INSERTED表中每条新插入数据的Column1、Column2值,返回对应值赋值给Datatable1的Column1
  • 直接从INSERTED表取数插入,无需声明变量存储中间值,无论单次插入多少条数据都能正确同步
  • 如需新增其他条件规则,只需在CASE结构中新增对应的WHEN分支即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:21:03