Я пытаюсь выполнить обновление и выбрать... в основном, обновление на основе индекса, а затем выбрать обновленный идентификатор строки.
Это просто, используя предложение OUTPUT:
UPDATE Foo
SET Bar = 1
OUTPUT INSERTED.Id
WHERE Baz = 2
Но теперь, как мне получить это в переменной?
DECLARE @id INT
Эти три не работают:
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)
Этот последний включил, потому что он временно меня возбудил, когда все красные squigglies ушли в 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.