秘訣は、INSERTステートメントにWHEREを追加して、アイテムが存在しない場合にのみINSERTが機能するようにし、その後にSELECTステートメントを追加することです。次のように記述したID列でレコードを識別できると仮定します。
INSERT INTO MyTable (ID,Col1,Col2,...)
SELECT @IDValue,@Col1Value,@Col2Value, ...
WHERE NOT EXISTS (SELECT ID
FROM MyTable
WHERE [email protected])
SELECT *
FROM MyTable
Where [email protected]
各ステートメントは独自の暗黙的なトランザクションで実行されるため、ステートメントをトランザクションに入れる必要はありません。したがって、2つのINSERTが同時に成功する方法はありません。
編集 :TSQLではINSERTステートメントでVALUESとWHEREの部分が許可されていないため、INSERT...SELECT構文が必要です。