16

我正在使用 H2。如果它不存在,我想将一个值插入到表中。我用以下方法创建表:

CREATE TABLE IF NOT EXISTS $types 
  (type VARCHAR(15) NOT NULL UNIQUE);

我想做一些类似的事情

REPLACE INTO types (type) values ('type1');

我找到了一个关于 Replace 的示例,该示例显然适用于 MySQL,但我使用的是 h2。但是当我从我的 h2 控制台运行它时出现错误:

Syntax error in SQL statement "REPLACE[*] INTO TYPES (TYPE) VALUES ('expense') "; expected "ROLLBACK, REVOKE, RUNSCRIPT, RELEASE, {"; SQL statement:
REPLACE INTO types (type) values ('expense') [42001-170] 42001/42001

我也试过

INSERT IGNORE INTO types (type) values ('expense');

INSERT INTO types (type) values ('expense') ON DUPLICATE KEY UPDATE type=type;

我不在乎新插入是否覆盖旧数据,或者它只是不执行新插入。有没有办法用 h2 数据库做到这一点?

4

1 回答 1

26

合并语句应该允许您实现您想要的。我不是 H2 方面的专家,但我已经MERGE在 SQL Server 中多次使用过该语句,从该网站的外观来看,它应该可以解决问题。

从网站:

更新现有行,并插入不存在的行。如果未指定键列,则使用主键列来查找行。

于 2013-03-08T03:27:31.887 回答