Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果不存在,则插入h2表_Sql_H2_Insert Update - Fatal编程技术网

Sql 如果不存在,则插入h2表

Sql 如果不存在,则插入h2表,sql,h2,insert-update,Sql,H2,Insert Update,我用的是H2。我想在表中插入一个不存在的值。我使用以下内容创建表: CREATE TABLE IF NOT EXISTS $types (type VARCHAR(15) NOT NULL UNIQUE); 我想做一些类似的事情 REPLACE INTO types (type) values ('type1'); 我找到了一个很明显对MySQL有效的替换,但我使用的是h2。但是,当我从h2控制台运行此命令时,出现了一个错误: Syntax error in SQL statement

我用的是H2。我想在表中插入一个不存在的值。我使用以下内容创建表:

CREATE TABLE IF NOT EXISTS $types 
  (type VARCHAR(15) NOT NULL UNIQUE);
我想做一些类似的事情

REPLACE INTO types (type) values ('type1');
我找到了一个很明显对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');

我不在乎新插入是否覆盖了旧数据,或者它只是不执行新插入。有没有一种方法可以通过h2数据库实现这一点?

应该允许您实现您想要的。我不是H2方面的专家,但我已经在SQL Server中多次使用了
MERGE
语句,从该网站的外观来看,它应该可以做到这一点

网址:

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


如果存在表,可以执行
删除操作,然后从头开始吗?感谢您提供语法链接,看起来Insert语句中没有类似MySQL的修饰符:。不过,我想我不会丢掉我的桌子。
INSERT INTO types (type) values ('expense') ON DUPLICATE KEY UPDATE type=type;