[解決済み] SQL Server 2005でアップサート(更新または挿入)する方法
2022-03-06 23:54:13
質問
従業員の行を挿入しているテーブルがありますが、次に行を挿入するときに、その従業員のデータを再度挿入するのではなく、必要な列で更新したいのです。
SQL Server 2005でこれを行うにはどうすればよいですか?
jspを使用しています。
私のクエリは
String sql="insert into table1(id,name,itemname,itemcatName,itemQty)values('val1','val2','val3','val4','val5')";
初めてならデータベースに挿入し、存在するなら更新する。
どうすればいいのでしょうか?
解決するには?
存在確認をしてみてください。
IF NOT EXISTS (SELECT * FROM dbo.Employee WHERE ID = @SomeID)
INSERT INTO dbo.Employee(Col1, ..., ColN)
VALUES(Val1, .., ValN)
ELSE
UPDATE dbo.Employee
SET Col1 = Val1, Col2 = Val2, ...., ColN = ValN
WHERE ID = @SomeID
これをストアドプロシージャにラップして、外部から(例えばC#などのプログラミング言語から)そのストアドプロシージャを呼び出せばいいだけですから、簡単ですね。
更新してください。 このステートメント全体を1つの長い文字列で書くか(可能ですが、あまり有用ではありません)、ストアドプロシージャにラップするか、どちらかです。
CREATE PROCEDURE dbo.InsertOrUpdateEmployee
@ID INT,
@Name VARCHAR(50),
@ItemName VARCHAR(50),
@ItemCatName VARCHAR(50),
@ItemQty DECIMAL(15,2)
AS BEGIN
IF NOT EXISTS (SELECT * FROM dbo.Table1 WHERE ID = @ID)
INSERT INTO dbo.Table1(ID, Name, ItemName, ItemCatName, ItemQty)
VALUES(@ID, @Name, @ItemName, @ItemCatName, @ItemQty)
ELSE
UPDATE dbo.Table1
SET Name = @Name,
ItemName = @ItemName,
ItemCatName = @ItemCatName,
ItemQty = @ItemQty
WHERE ID = @ID
END
そして、ADO.NETコードからそのストアドプロシージャを呼び出すだけです。
関連
-
[解決済み] nvarchar 型から datetime 型へのデータ型変換エラー
-
[解決済み] SQL Server 2005でアップサート(更新または挿入)する方法
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] Microsoft SQL Server 2005でgroup_concat MySQL関数をシミュレートする?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】結合を使用したSQL更新クエリ
-
[解決済み] Sqlサーバーの文字列がNULLまたは空であるかどうかを確認する方法
-
[解決済み】SQL Serverスキーマは何の役に立つのか?
-
[解決済み] SQL Server 2005 T-SQL での Base64 エンコーディング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] nvarchar 型から datetime 型へのデータ型変換エラー
-
[解決済み] 存在しない重複があるため、インデックスを作成できない?
-
[解決済み] SQL Server 2005でアップサート(更新または挿入)する方法
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] Sqlサーバーの文字列がNULLまたは空であるかどうかを確認する方法
-
[解決済み】SQL Serverスキーマは何の役に立つのか?
-
[解決済み] テーブルを変更し、複数の列を追加する ms sql
-
[解決済み] SQL Server Brokerを有効にするのに時間がかかりすぎる
-
[解決済み] SQL Server 2005 T-SQL での Base64 エンコーディング