DB2データベーステーブルがあります
Users
------
userId: BIGINT
ユーザーのテーブルから行を返す必要があります。行が存在しない場合は、挿入して返す必要があります。これを行うことができる単一のステートメントはありますか
MERGE
次のように、IDがテーブルにまだ存在しない場合は、を使用して挿入できます。
MERGE INTO Users u (userId)
USING (VALUES (123)) AS m (userId)
ON u.userId = m.userId
WHEN NOT MATCHED THEN
INSERT (userID)
VALUES (m.userId)
ELSE IGNORE
テーブルに挿入されたものを取得できるステートメントもあります(ページで検索しdata-change-table-reference
てINSERT
ください)。
SELECT *
FROM NEW TABLE (
INSERT INTO Users(userId)
VALUES (123), (234)
)
残念ながら、これら2つのステートメントを組み合わせて、すべてを1つのステートメントで実行することはできません。一意の値が必要な場合にできる最善のことは、複合SQLINSERT
と一緒にメソッドを実行し、 SQLCODEを処理することだと思います。-803