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
相关产品推荐
相关产品推荐

