我有一个触发器,它根据下面的条件从另一个表中将数据插入到表中:
DECLARE @pID VARCHAR(50);
SELECT @pID = I.pID FROM inserted I;
INSERT INTO Queue ( ID )
SELECT ID
FROM Inventory
WHERE pID = @pID
如何在插入之前检查ID是否存在?
注意:将从 -
返回多个记录SELECT ID
FROM Inventory
WHERE pID = @pID
答案 0 :(得分:1)
正如您已经提到的,[inserted]可以包含零个,一个或多个记录。将该信息存储到变量中的方法不起作用。
无论如何,我假设您要检查是否存在以避免多次在Queue表中输入相同的ID?
在这种情况下,您可以在触发器中使用以下代码:
INSERT INTO Queue ( ID )
SELECT DISTINCT I.ID -- as to avoid same ID being inserted multiple times
FROM Inventory I
JOIN inserted
ON inserted.pID = I.pID
WHERE NOT EXISTS ( SELECT *
FROM Queue Q
WHERE Q.ID = I.ID )