OUTPUT機能を使用して、デフォルト値をパラメータに戻すことができます。
CREATE TABLE MyTable
(
MyPK UNIQUEIDENTIFIER DEFAULT NEWID(),
MyColumn1 NVARCHAR(100),
MyColumn2 NVARCHAR(100)
)
DECLARE @myNewPKTable TABLE (myNewPK UNIQUEIDENTIFIER)
INSERT INTO
MyTable
(
MyColumn1,
MyColumn2
)
OUTPUT INSERTED.MyPK INTO @myNewPKTable
VALUES
(
'MyValue1',
'MyValue2'
)
SELECT * FROM @myNewPKTable
私は、プライマリキーとして一意の識別子を使用することに注意してください。 GUIDのインデックス作成は、新しく生成されたGUIDがインデックスの途中に挿入され、最後に追加されるだけなので、パフォーマンスが非常に悪いです。 NewSequentialId()のSQL2005には新機能があります。あなたのガイドであいまいさが必要ない場合は、可能な代替方法です。
こんにちは、感謝を挿入した場合。このコードは、 "テーブル変数" @myNewPK "を宣言する必要があります。あなたはテーブルにしか出力できないようです。私はそれが一時テーブルを宣言し、テーブルからIDを選択することによって働いている。あなたの助けを借りて、そしてGuidsの貧弱なパフォーマンスに関するアドバイスをありがとう。 –
申し訳ありませんが、私はそれをテストしていなかった、ちょうど私が思い出したものから一緒にそれを投げていた。テーブル変数を返すように答えを更新しました。 –
非常にいいです、ありがとうRobin。受け入れられました:) –