【问题标题】: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

【问题讨论】:

    标签: sql-server database triggers exists


    【解决方案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 ? - 这是正确的..
    猜你喜欢
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    相关资源
    最近更新 更多