H2仅在不存在的情况下插入行

时间:2016-03-31 20:40:33

标签: sql merge insert h2

我正在使用H2文件数据库,我遇到了以下问题。假设我有一个名为PROPERTIES的表,其中包含两个VARCHAR(255)列:NAME和VALUE,其中NAME是主键。现在,我想仅在不存在的情况下用新行更新表。如果存在,我不想更改该NAME的VALUE。对于MS SQL Server来说这很容易,但是H2 SQL没有IF,而不是EXESTS。它确实有一个名为MERGE的命令,但如果存在则更新。有没有办法用H2 SQL做到这一点?
我不相信这个问题是重复的,因为我还没有看到它特别要求H2。

1 个答案:

答案 0 :(得分:0)

我不熟悉H2但是如果"哪里不存在"不起作用,如何检查新值是否已经存在,如果不存在则插入?

这是一个SQL Server示例,因此您可能需要更改syntasx。

Insert into Properties
(Name, Value)
source.Newname, source.NewValue
from Source
where NewName 
not in (
select Name
from Properties
)
;