0

重複の可能性: SQLServerでのINSERTまたはUPDATEの解決策行がまだ存在しない場合にのみ行を挿入
します

私のタイトルは、私がやろうとしていることをほぼ説明していますが、もう少し詳しく説明します。呼び出されたときにストアドプロシージャを作成しています。最初に、行がすでに存在するかどうかを確認し(2つのパラメーターと比較して)、存在する場合は、行の特定の列を更新し、行がまだ存在しない場合は更新します。テーブルに新しい行を挿入します。

BEGIN
SELECT 
(
CASE WHEN [Site] = @site and Plant = @plant
then 
UPDATE [Status]
FROM Server_Status
WHERE [Site] = @site
ELSE
Insert into Server_Status(Name, [Path], [Site], Plant, [Status])
Values (@name, @path, @site, @plant, @status)
end
)
FROM Server_Status 
END

私がこれまでに持っているものですが、(明らかに)機能しません。私よりもSQLの知識が豊富な人はいますか?

-J

4

3 に答える 3

3

MERGE(Transact-SQL)ステートメントを確認することをお勧めします。

ソーステーブルとの結合の結果に基づいて、ターゲットテーブルに対して挿入、更新、または削除操作を実行します。たとえば、一方のテーブルの行をもう一方のテーブルの違いに基づいて挿入、更新、または削除することにより、2つのテーブルを同期できます。

于 2012-09-25T17:25:07.800 に答える
2

できるよ:

IF EXISTS(SELECT * FROM MyTable WHERE...)
 --value exists perform update
  BEGIN
    UPDATE...
  END
ELSE
  --value doesnt exist perform insert
  BEGIN
    INSERT ...
  END
于 2012-09-25T17:22:02.827 に答える
1

最初に、次のようにIF EXISTSステートメントを使用して、行の存在を確認する必要があります。

IF EXISTS (SELECT * FROM Server_Status WHERE Site = @Site) 
BEGIN
    -- UPDATE statement.
END
ELSE
    -- INSERT statement.
END
于 2012-09-25T17:22:53.487 に答える