在 MS SQL Server 中的表上,如果这些行满足某些条件,我需要在新行上运行 CLR 存储过程。我认为这或多或少是直截了当的:
if ((SELECT Cabinet FROM INSERTED) = 1 OR (SELECT Cabinet FROM INSERTED) = 3) AND (SELECT Result_02 FROM INSERTED) = 'N'
BEGIN
DECLARE @id int
SET @id = (SELECT ID FROM INSERTED)
exec PrintLabel
@id,
N'LP 2844 LGE'
END;
但是,这最近开始引发有关返回多行的子查询的错误。我了解到 INSERT 触发器为每个语句运行一次,不一定在单独的行上运行。因此,该 IF 语句可以在多行上工作,从而导致错误。
我的问题是:如果行是批量添加的(在本例中是通过 MERGE 语句),我如何迭代每个新行。