Hola, Ricardo.
>Pero se me genera un problem:
>La variable @@IDENTITY retorna el último valor "identity" generado y necesito saber el de una tabla en particular y además controlar que sobre esa tabla no hayan hecho otro INSERT desde otro puesto de trabajo antes que me devuelva el valor de identity de mi propio INSERT.
>
>El tema en concreto es una tabla de movimientos contables que el número de documento es "identity", la tabla la usan otros sistemas en la empresa (o sea no es nuestra) y nuestro software debe hacer algunos INSERT y saber que número de documento devolvió ese INSERT en la columna de tipo identity.
>Pero, hay mas de 150 puestos de trabajo locales y remotos actualizando la misma tabla.
>Mi duda también venia por el lado de como SQL Server maneja los locks cuando se hace una transacción, creo que no los hace más por página y los hace a nivel de registro, pero no estoy seguro. Pero quería saber si el código que estabamos haciendo respetaba este punto.
Fijate en SCOPE_IDENTITY(). Te devuelve el último identity para una tabla dada, y te da el último generado dentro de tu conexión, por lo que no tenés problema de inserts cruzados.
Saludos,