SQL: actualiza una fila y devuelve un valor de columna con 1 consulta

Necesito actualizar una fila en una tabla, y obtener un valor de columna de ella. Puedo hacer esto con

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

Esto genera 2 planes / accesos a la mesa. ¿Es posible en T-SQL modificar la instrucción UPDATE para actualizar y devolver la columna Nombre solo con 1 plan / acceso?

Estoy usando los métodos C #, ADO.NET ExecuteScalar() o ExecuteReader() .

Quieres la cláusula OUTPUT

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

Accede a la tabla solo una vez:

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

Si usa SQL Server 2005 en adelante, la cláusula OUTPUT es ideal para esto

Use un procedimiento almacenado para esto.

Cree un procedimiento almacenado que tome @id como parámetro y haga ambas cosas. A continuación, usa un DbDataAdapter para llamar al procedimiento almacenado.

No pude actualizar y devolver una fila dentro de una statement seleccionada . Es decir, no puede usar el valor seleccionado de las otras respuestas.

En mi caso, quería usar el valor seleccionado en una consulta. La solución que se me ocurrió fue:

 declare @NextId int set @NextId = (select Setting from Settings where key = 'NextId') select @NextId + ROW_NUMBER() over (order by SomeColumnOfYourTable) from YourTable update Settings set Setting = Setting + @@ROWCOUNT where key = 'NextId'