【发布时间】:2016-12-11 22:47:17
【问题描述】:
我正在尝试使用 MERGE INTO 来保存或更新 HSQLDB 表。我遇到了在不匹配时插入新记录的问题。
重现问题的步骤
- 创建表
CREATE TABLE user (
id INT,
name VARCHAR(16),
address VARCHAR(64)
);
- 合并到
MERGE INTO user u1
USING (select id from user where id=1) u2
ON u1.id = u2.id
WHEN MATCHED THEN
UPDATE SET u1.name='name', u1.address='address'
WHEN NOT MATCHED THEN
INSERT (id, name, address) values(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”还有第三种情况吗?
谢谢。
【问题讨论】: