我有以下的HSQLDB數據庫:HSQLDB合併標識列
CREATE TABLE t (id INT IDENTITY, code VARCHAR(10), description VARCHAR(100))
INSERT INTO t (code, description) VALUES ('C1', 'dining table'), ('C2', 'deck chair')
我需要添加條目,只有當他們沒有在表中已經存在。 我想在一個步驟中完成此操作(而不是SELECT步驟以查明條目是否在表格中,如果不是這種情況,則執行第二步INSERT操作)
hsqldb具有MERGE操作這個。 然而,問題是我有一個ID IDENTITY列hsqldb應該自動照顧設置值, ,我不知道如何告訴這個MERGE操作。
MERGE INTO t USING (VALUES(3, 'C3', 'conference table'))
AS vals(x,y,z) ON t.code = vals.y
WHEN NOT MATCHED THEN INSERT VALUES vals.x, vals.y, vals.z
這工作,但我不得不放棄了ID(3),我需要它是HSQLDB自動設定ID(就像上面的INSERT操作)。我需要這樣的:
MERGE INTO t (code, description) USING (VALUES('C3', 'conference table'))
AS vals(x,y) ON t.code = vals.x
WHEN NOT MATCHED THEN INSERT VALUES vals.x, vals.y
但此查詢不工作,因爲合併操作不允許指定我工作的這列「(代碼說明)」。
我該如何實現它?
PS:http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_merge_statement