2016-03-31 87 views
0

我正在使用H2文件數據庫,並且遇到以下問題。假設我有一個名爲PROPERTIES的表,其中包含兩個VARCHAR(255)列:NAME和VALUE,其中NAME是主鍵。現在,我想用新行更新表,只有當它不存在。如果存在,我不想更改該名稱的VALUE。這很容易說MS SQL Server,但H2 SQL沒有IF,WHERE NOT EXISTS。它有一個名爲MERGE的命令,但是如果存在則更新。有沒有辦法與H2 SQL做到這一點?
我不認爲這個問題是重複的,因爲我沒有看到它特別要求H2。只有在不存在H2插入行的情況下

+0

看來你可以用'那裏不是H2 exists' http://stackoverflow.com/questions/19768051/h2-sql-database-insert-if-the-record-does-not-exist –

+0

其實這對我不起作用。在H2中似乎並沒有使用WHERE NOT EXISTS。我正在使用SQuirrel 3.6來運行查詢(H2驅動程序是h2-1.4.187) –

回答

0

我不熟悉H2,但是如果「where not exists」不起作用,那麼如何檢查新值是否已經存在,如果不存在,如何插入?

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

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

謝謝,但您的代碼似乎從另一個表中插入。我需要能夠將常量值直接插入到表中。我將如何填充源代碼? –

+0

你是如何傳遞這些值的?我們是否使用變量?使用變量可以刪除「from Source」子句,並將NewName和NewValue列值替換爲變量。 – Adam

相關問題