2016-03-31 32 views
0

私はH2ファイルデータベースを使用しており、次の問題が発生しています。 NAMEとVALUEの2つのVARCHAR(255)列を持つPROPERTIESという表があり、NAMEが主キーであるとします。今、私はそれが存在しない場合にのみ、新しい行でテーブルを更新したいと思います。存在する場合、そのNAMEのVALUEを変更したくありません。これは、MS SQL Serverでは簡単ですが、H2 SQLにはIFが存在しない場合は存在しません。それは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に存在しない場所を使用できるとは思われません。私はクエリを実行するためにSQuirrel 3.6を使用しています(H2ドライバはh2-1.4.187です) –

答えて

0

私はH2に精通していませんが、 "存在しない"が機能しない場合は、新しい値が既に存在するかどうかを確認し、

これは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

関連する問題