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
- 在第一个运行之后,计数器是1。
- 第二个运行后,计数器为2。
- 在第三个 运行 之后,计数器仍然是 2。这里我希望计数器是 3。(如果我 运行 对 MYSQL 进行相同的查询,它是 3)。
这是一个错误,还是我误解了 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 用法。
我正在使用 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
- 在第一个运行之后,计数器是1。
- 第二个运行后,计数器为2。
- 在第三个 运行 之后,计数器仍然是 2。这里我希望计数器是 3。(如果我 运行 对 MYSQL 进行相同的查询,它是 3)。
这是一个错误,还是我误解了 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 用法。