HSQLDB合并成既不能插入也不能更新

HSQLDB merge into can neither insert nor update

我正在尝试使用 MERGE INTO 来保存或更新 HSQLDB table。我 运行 遇到不匹配时插入新记录的问题。

重现问题的步骤

  1. 创建table

CREATE TABLE user ( id INT, name VARCHAR(16), address VARCHAR(64) );

  1. 合并到

合并到用户 u1 USING (select 来自 id=1 的用户的 id) u2<br> ON u1.id = u2.id<br> 当匹配时 更新集 u1.name='name', u1.address='address'<br> 当不匹配时 INSERT (id, name, address) 值(1, 'name', 'address')

如果没有带id:1的记录,上面的语句什么都没有,"Updated Rows: 0".

如果插入一条记录

INSERT INTO user values(1, 'Y', 'B');

以上MERGE INTO语句可以更新现有记录。

有人知道 INSERT WHEN NOT MATCHED 有什么问题吗?除了"WHEN MATCHED"和"WHEN NOT MATCHED"还有第三种情况吗?

谢谢。

问题出在这个子句中:

USING (select id from user  where id=1) u2

当table中没有记录时,USING子句没有生成行。所以没有什么可以插入或更新现有的行。

您需要重写它,以便 USING 子句生成包含数据的行。

例如:

USING (values(1)) u2(id)