一尘不染

插入h2表(如果不存在)

sql

我正在使用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数据库来做到这一点?


阅读 153

收藏
2021-05-16

共1个答案

一尘不染

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

从网站:

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

2021-05-16