Mise à jour SQL – Mise à jour des lignes sélectionnées

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 .