HSQLDBs 'ON DUPLICATE KEY UPDATE'-功能的行为与MYSQL 中的不同?

HSQLDBs 'ON DUPLICATE KEY UPDATE'-feature does not behave as in MYSQL?

我正在使用 MYSQLs ON DUPLICATE KEY UPDATE-feature,当 运行ning 在 MYSQL 数据库上时,它可以正常工作。但是当我尝试针对内存中的 HSQLDB 编写测试 运行ning 时,我遇到了不同的行为。

给出以下 table:

CREATE TABLE foo (id INT PRIMARY KEY NOT NULL, counter INT);

使用以下插入语句:

INSERT INTO foo(id, counter) VALUES (1, 1) ON DUPLICATE KEY UPDATE counter=counter+1

这是一个错误,还是我误解了 ON DUPLICATE KEY UPDATE 应该如何工作?

有关 运行ning 示例,请参阅以下 github 存储库:https://github.com/mortenberg80/hsqldbtest

在遇到 col_name 的所有情况下,ON DUPLICATE UPDATE 的初始 HSQLDB 实现都使用 VALUES 列表作为更新源。版本 2.5.1 已得到增强,可以使用现有的 table 行值作为 col_name 的源,并使用 VALUES 列表作为 VALUES(col_name) 的源。这对应于 MySQL 用法。