1

以下のような条件に基づいて、別のテーブルからテーブルにデータを挿入するトリガーがあります。

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
4

1 に答える 1

1

すでに述べたように、[inserted] にはゼロ、1 つ、または複数のレコードを含めることができます。その情報を変数に格納するアプローチは機能しません。

とにかく、同じ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 )
于 2013-09-30T11:07:50.247 に答える