1

DB2データベーステーブルがあります

Users
------
userId: BIGINT

ユーザーのテーブルから行を返す必要があります。行が存在しない場合は、挿入して返す必要があります。これを行うことができる単一のステートメントはありますか

4

1 に答える 1

3

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-referenceINSERTください)。

SELECT *
FROM NEW TABLE (
    INSERT INTO Users(userId)
    VALUES (123), (234)
)

残念ながら、これら2つのステートメントを組み合わせて、すべてを1つのステートメントで実行することはできません。一意の値が必要な場合にできる最善のことは、複合SQLINSERTと一緒にメソッドを実行し、 SQLCODEを処理することだと思います。-803

于 2012-05-25T22:15:43.387 に答える