57 votes

SQL : Mettre à jour une ligne et le renvoi d’une valeur de colonne avec 1 requête

Je dois mettre à jour une ligne dans une table et en obtenir une valeur de colonne. Je peux le faire avec

 UPDATE Items SET Clicks = Clicks + 1 WHERE Id = @Id;
SELECT Name FROM Items WHERE Id = @Id
 

Cela génère 2 plans / accès à la table. Est-il possible dans T-SQL de modifier l'instruction UPDATE afin de mettre à jour et de renvoyer la colonne Nom avec 1 plan / accès uniquement?

J'utilise des méthodes C #, ADO.NET ExecuteScalar() ou ExecuteReader() .

108voto

Marc Gravell Points 482669

Vous voulez la clause OUTPUT

 UPDATE Items SET Clicks = Clicks + 1
OUTPUT INSERTED.Name
WHERE Id = @Id
 

24voto

Learning Points 5386

Accède à la table une seule fois:

 UPDATE Items SET Clicks = Clicks + 1 , @Name = Name WHERE Id = @Id;
select @name;
 

4voto

Russ Cam Points 58168

Si vous utilisez SQL Server 2005 ou ultérieur, la clause OUTPUT est idéale pour cela.

0voto

Rashack Points 3344

Utilisez une procédure stockée pour cela.

0voto

BFree Points 46421

Créez une procédure stockée qui prend @id en tant que paramètre et fait ces deux choses. Vous utilisez ensuite un DbDataAdapter pour appeler la procédure stockée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X