在插入表之前检查数据是不是存在
Posted
技术标签:
【中文标题】在插入表之前检查数据是不是存在【英文标题】:Check data existance before inserting to table在插入表之前检查数据是否存在 【发布时间】:2013-09-30 11:01:32 【问题描述】:我有一个触发器,它根据如下条件将数据从另一个表插入到一个表中:
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
【问题讨论】:
【参考方案1】:正如您已经提到的,[inserted] 可以包含零个、一个或多个记录。将该信息存储到变量中的方法将不起作用。
无论如何,我假设您要检查是否存在以避免在 Queue table 中多次输入相同的 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 )
【讨论】:
无论如何,我假设您要检查是否存在以避免在 Queue table 中多次输入相同的 ID ? - 这是正确的..以上是关于在插入表之前检查数据是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
如何在插入 MySQL 之前检查表中是不是存在名称 [重复]