私は更新と選択を実行しようとしています...基本的に、インデックスに基づいて更新し、更新された行IDを選択します。
これは、OUTPUT 句を使用すると簡単です。
UPDATE Foo
SET Bar = 1
OUTPUT INSERTED.Id
WHERE Baz = 2
しかし今、どうすればこれを変数に入れることができますか?
DECLARE @id INT
次の 3 つは機能しません。
UPDATE Foo
SET Bar = 1
OUTPUT @id = INSERTED.Id
WHERE Baz = 2
SET @id =
(UPDATE Foo
SET Bar = 1
OUTPUT INSERTED.Id
WHERE Baz = 2)
SET @id =
(SELECT Id FROM (UPDATE Foo
SET Bar = 1
OUTPUT INSERTED.Id Id
WHERE Baz = 2) z)
最後の 1 つが含まれているのは、Management Studio ですべての赤い波線が消えたときに一時的に興奮したからです。残念ながら、次のエラーが表示されます。
A nested INSERT, UPDATE, DELETE, or MERGE statement is not allowed in a SELECT statement that is not the immediate source of rows for an INSERT statement.