Ich versuche, ein Update und eine Auswahl durchzuführen ... im Grunde genommen ein Update basierend auf einem Index und wähle dann die Zeilen-ID aus, die aktualisiert wurde.
Dies ist mit der OUTPUT-Klausel einfach:
UPDATE Foo
SET Bar = 1
OUTPUT INSERTED.Id
WHERE Baz = 2
Aber wie bekomme ich das in eine Variable?
DECLARE @id INT
Diese drei funktionieren nicht:
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)
Das letzte schloss ein, weil es mich vorübergehend aufgeregt hatte, als alle roten Schnörkel im Management Studio verschwanden. Leider bekomme ich diesen Fehler:
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.