J'utilise SQL Server 2008
J'ai une table nommée MYTABLE
avec deux colonnes: ID
, STATUS
Je veux écrire une procédure stockée qui returnne les loggings dont STATUS
est 0. Mais ce proc stocké doit mettre à jour le STATUS
des lignes returnnées à 1. Comment puis-je faire cette opération de sélection et de mise à jour dans une seule requête?
update MyTable set Status = 1 output inserted.* where Status = 0
Si vous voulez returnner à quoi ressemblait la table avant la mise à jour, vous devriez utiliser deleted. * À la place.
update MyTable set Status = 1 output deleted.* where Status = 0
Vous pouvez bien sûr utiliser les deux si vous le souhaitez et vous n'avez pas besoin d'utiliser *
. Vous pouvez spécifier les colonnes qui vous intéressent.
update MyTable set Status = 1 output inserted.ID, inserted.status, deleted.status as OldStatus where Status = 0
Peut probablement être fait en utilisant la clause OUTPUT
.