Ich habe die folgende Frage:
UPDATE #Temp_SessionItem SET [Status] =
CASE
WHEN ([AddressFK] IS NULL OR [StatusFK] IS NULL) AND [Status] = 1
THEN 3
WHEN [AddressFK] IS NOT NULL AND [StatusFK] IS NOT NULL AND [Status] = 1
THEN 2
END
Das Problem ist, dass es bei der Ausführung nicht das erwartete Ergebnis liefert, d.h. es setzt nicht den Wert von [ Status
Feld auf 3 setzen, wenn [ AddressFK
] oder [ StatusFK
] ist NULL
. Stattdessen wird lediglich versucht, die NULL
zu Status, wenn es 3 hinzufügen sollte.
Wenn ich die AND [Status] = 1
Teil des Ausdrucks wird zwar 3 zurückgegeben, aber dann werden auch die Werte aktualisiert, die nicht [Status] = 1
.
Gibt es etwas Offensichtliches, das ich hier übersehe?
Ich verwende SQL Server 2008.
EDIT:
Nachdem Royi Namir mich darauf hingewiesen hat, habe ich erkannt, dass das Problem weiter unten in der gespeicherten Prozedur liegen muss, in der diese Abfrage ausgeführt wird. Genauer gesagt, ist #Temp_SessionItem nur eine temporäre Tabelle. Nach der oben genannten Abfrage versuche ich, die ursprüngliche Tabelle mit der folgenden Abfrage zu aktualisieren:
-- update the status of the original session item table
UPDATE UploadSessionItem SET [Status] = T.[Status]
FROM #Temp_SessionItem AS T
WHERE UploadSessionItem.UploadSessionItemId = T.ID
was offensichtlich nicht funktioniert, da alle [ Status
Artikel gibt es noch 1