0

他のさまざまなテーブルを挿入/更新するための INSTEAD OF トリガーを持つビューに値を挿入しています。トリガーの最後の行は

SELECT SCOPE_IDENTITY()

つまりSCOPE_IDENTITY()、挿入後に自分自身を選択すると、挿入されたばかりの ID 値を使用できるようになり、NULL 値が取得されます。

私が正しく理解している場合、これは、呼び出された に関連付けられた ID 値がないためSCOPE_IDENTITY()です。

トリガーから SELECT 値を取得する方法はありますか? トリガーの変更は、現在の動作に他の依存関係があるため、実際にはオプションではありません。

一時テーブルを使用して動的 SQL として挿入を実行することもできますが、それは恐ろしくハックな方法のように思えます。

DECLARE @scopeid INT
CREATE TABLE #temp(id int)
INSERT INTO #temp EXEC ('INSERT INTO myView(somecolumns) VALUES (somevalues)')
SELECT @scopeid = TOP 1 id FROM #temp
DROP TABLE #temp

確かにこれよりもきちんとした方法はありますか?

4

0 に答える 0