2009-10-22 34 views
17

Estoy intentando devolver la identificación de una fila puedo actualizar en SQLObtener el ID de una fila que actualizan en SQL Server

UPDATE ITS2_UserNames 
    SET AupIp = @AupIp 
    WHERE @Customer_ID = TCID AND @Handle_ID = ID 

    SELECT @@ERROR AS Error, @@ROWCOUNT AS RowsAffected, SCOPE_IDENTITY() AS ID 

y me siguen dando nulo para la identificación, ¿cómo puedo conseguir este ?

Respuesta

40

El @@identity y scope_identy() le entregarán la identidad de un nueva fila, es decir. después de un inserto. Después de su actualización, la identidad de la fila es ... @Customer_ID o @Handle_Id? Si es un campo diferente, shoudl utiliza la cláusula OUTPUT para devolver el ID de la fila actualizada:

UPDATE ITS2_UserNames 
SET AupIp = @AupIp 
OUTPUT INSERTED.PrimaryKeyID 
WHERE @Customer_ID = TCID AND @Handle_ID = ID 
+2

Suponiendo que está en SQL2005/2008, por supuesto – MartW

+0

No, es en SQL 2000, así – MartW

+0

@CodeByMoonlight: Tienes razón –

0

Si desea averiguar los registros que coinciden con esa actualización que debe hacer una selecta con él

Select IdColumn 
From ITS2_UserNames 
WHERE @Customer_ID = TCID AND @Handle_ID = ID 
+0

Esto no funcionará si está actualizando una columna y también seleccionando – Talon

1

¿No está identificando el valor de IDENTIDAD de la fila con @Handle_ID? Si es así, solo use:

SELECT @@ERROR AS Error, @@ROWCOUNT AS RowsAffected, @Handle_ID AS ID; 

Si no, ¿puede explicar qué columna es la columna IDENTIDAD?

Cuestiones relacionadas