2013-02-25 51 views
2

從文檔中我不明白我該如何使用它。使用MERGE SQL語句將行插入到hsqldb表中

說我有一排我想UPSERT到收集,覆蓋任何現有值,如果行已經存在。我沒有行主鍵,但我確實有一個唯一的鍵。

任何人都可以向我展示將這樣的行插入到HSQLDB表中的MERGE語句嗎?

回答

10

爲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子句的數據被引用,但是你可以插入或更新任何其他值。