2009-04-08 13 views
0

SQLステートメントが必要なSQL CEに1つのフィールドテーブルがあります。目的は、レコードがすでに存在する場合は削除し、存在しない場合はレコードを挿入することです。 SQL CEで可能ですか?SQl Server CEを使用する。存在しない場合にのみ挿入し、存在する場合に削除できますか?

INSERT INTO Source_Table 
SELECT  'myvalue' AS Expr1 
WHERE  (NOT EXISTS 
       (SELECT  Source_Data 
       FROM  Source_Table AS Source_Table_1 
       WHERE  (Source_Data = 'myvalue'))) 

答えて

1

なぜだけではなく...

DELETE Source_Table WHERE Source_Data = 'myvalue' 
GO 
INSERT INTO Source_Table (Source_Data) values('myvalue') 

私はレコードを削除し、同じデータを挿入する点がどうなるかわからないんだけど、これはそれを達成する必要があります。

+0

SQL CEはバッチクエリをサポートしていない可能性があります。このために2つの個別のクエリを実行する必要がある場合、少し苦労します。 – jalf

+0

SQLはSQL CE 3.5sp1でうまく動作します。違う結果が見えましたか? –

0

目的は、文字通り削除する場合には、それが存在していて、場合のみは、それが存在しない場合、その後、あなたが書いた何をする必要がそれを挿入します。

が存在しない場合は挿入することを狙っている場合は、を置き換えてください。アダムは正しく挿入した後に削除を実行することもできます。オーバーヘッドを節約するために、同じステートメントバッチで両方を実行します。

複数のフィールドがありましたが、もちろん更新を行い、削除後には挿入しません。 (ただし、挿入後に削除すると、は内部的にの更新を実行します)。

+0

目的:1つだけが発生します。 1.レコードが存在する場合、レコードは削除されます。 2.レコードが存在しない場合は、レコードが挿入されます。 –

関連する問題