6

ドキュメントから、私がそれをどのように使用することになっているのか理解できませんでした。

行が既に存在する場合、既存の値をオーバーライドして、コレクションに upsert したい行があるとします。行の主キーはありませんが、一意のキーはあります。

そのような行を HSQLDB テーブルにアップサートする MERGE ステートメントを教えてもらえますか?

4

1 に答える 1

15

HSQLDB の簡単な例は次のとおりです。

CREATE TABLE B(ID INT UNIQUE, A_ID INT);

MERGE INTO B 
  USING (VALUES 2, 3) I (ID, A_ID) 
  ON (B.ID=I.ID)
  WHEN MATCHED THEN UPDATE SET B.A_ID = I.A_ID
  WHEN NOT MATCHED THEN INSERT (ID, A_ID) VALUES (I.ID, I.A_ID)

USING 句には、新しいデータが含まれています。ON 句は一致条件です。ここでは、主キーまたは一意の制約を使用する必要はありません。どの一致条件でもかまいません。WHEN MATCHED 句と WHEN NOT MATCHED 句は、それぞれ UPDATE と INSERT に使用されます。この単純な例では、USING 句のデータが参照されていますが、他の値で挿入または更新できます。

于 2013-02-25T20:35:56.377 に答える