[解決済み】INSERT文のOUTPUT句を使用してID値を取得するにはどうすればよいですか?
2022-04-06 06:21:15
質問
次のようなinsert文があった場合。
INSERT INTO MyTable
(
Name,
Address,
PhoneNo
)
VALUES
(
'Yatrix',
'1234 Address Stuff',
'1112223333'
)
を設定するにはどうすればよいのでしょうか?
@var INT
を新しい行の ID 値に設定します (これは
Id
) を OUTPUT 句で使用することはできますか?例えばINSERTED.Nameをテーブル変数に入れるサンプルは見たことがあるのですが、テーブル以外の変数に入れることができないのです。
試してみたところ
OUPUT INSERTED.Id AS @var
,
SET @var = INSERTED.Id
が、どちらもうまくいきませんでした。
解決方法は?
このように、新しく挿入されたIDをSSMSコンソールに出力させることもできます。
INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')
C# などから、呼び出し側のアプリに ID を返す必要がある場合にも、この方法を使用できます。
.ExecuteScalar()
(代わりに
.ExecuteNonQuery()
を読み込むために、結果の
ID
を返します。
また、新しく挿入された
ID
T-SQL内部で(例えば、後でさらに処理するために)、テーブル変数を作成する必要があります。
DECLARE @OutputTbl TABLE (ID INT)
INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')
この方法では、複数の値を
@OutputTbl
で、それに対してさらに処理を行う。また、通常のテンポラリテーブル(
#temp
) あるいは、quot;real" 永続的なテーブルを、ここでquot;出力ターゲット" として使用することもできます。
関連
-
[解決済み】集約関数のないTSQLピボット
-
[解決済み】SQL ServerでIdentityカラムを更新する方法は?
-
[解決済み] WHERE x IN (5) vs WHERE x = 5 ...なぜINを使うのか?
-
[解決済み] SQLです。最初の出現箇所のみを返す
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しません。
-
[解決済み] VBA - ADODB.CommandTextの実行
-
[解決済み] クエリビルダーのSQLクエリを文字列として出力するにはどうすればよいですか?
-
[解決済み] なぜインデックス作成時にINCLUDE句を使うのか?
-
[解決済み] MySQLの挿入クエリから新しいレコードの主キーIDを取得する?
-
[解決済み】JDBCで挿入IDを取得する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「パラメータ@objnameがあいまいか、主張する@objtype(COLUMN)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み】Teradata - 計算中に数値のオーバーフローが発生しました。
-
[解決済み] バックエンドバージョンでは、データベースのダイアグラムやテーブルのデザインはサポートされていません。
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] ORA-00920: 無効な関係演算子
-
[解決済み] エラー (ORA-00923: 期待された場所に FROM キーワードが見つかりませんでした)
-
[解決済み] "このSqlTransactionは完了しました。もう使用できません。"...設定エラー?
-
[解決済み] ORA-00920: 無効な関係演算子
-
[解決済み] ORA-01821: ISO 8601 のローカルタイム付き日付のフォーマットが認識されないエラー
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?