Ver ID automático

26/02/2007 - 10:23 por R3 | Informe spam
Hola a tod@s

Realizo una inserción en una tabla donde el ID es automático. ¿existe una
manera de averiguar la ID que me pone al nuevo registro?

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Juan Carlos Paramá
28/02/2007 - 18:03 | Informe spam
Hola,

Si, si desde la misma conexión recuperar el valor de la variable
@@IDENTITY obtendrás el valor del último valor autonúmerico insertado en esa
conexión.

Saludos,

Juan Carlos Paramá

"R3" escribió en el mensaje de noticias
news:
Hola a

Realizo una inserción en una tabla donde el ID es automático. ¿existe una
manera de averiguar la ID que me pone al nuevo registro?

Muchas gracias.
Respuesta Responder a este mensaje
#2 Roberto M. Oliva
09/03/2007 - 10:58 | Informe spam
Hola!

Yo suelo ejecutar la siguiente sentencia, que vale para cualquier base
de datos:

SELECT MAX(id) FROM Tabla

Tienes que meter la insercion y esta consulta en una misma
transaccion, para asegurarte de que nadie inserta un registro entre
medias y te cambia el id máximo.

Saludos
Roberto M. Oliva

On 26 feb, 10:23, R3 wrote:
Hola a

Realizo una inserción en una tabla donde el ID es automático. ¿existe una
manera de averiguar la ID que me pone al nuevo registro?

Muchas gracias.
Respuesta Responder a este mensaje
#3 Juan Carlos Paramá
12/03/2007 - 17:28 | Informe spam
Hola,

Hay que tener cuidado con eso, dependiendo del nivel de aislamiento de
la transacción puedes leer un valor que no sea el que tu has insertado. En
el modo de aislamiento por defecto (Read Commited) si otra transacción creo
un nuevo registro y efectuo el COMMIT entre tu insert y tu select leeras el
valor de ese otro insert en vez del tuyo. Además, más común aún, como
probablemente ambos habreis leido el mismo valor de ID el segundo que
realice el commit obtendrá un error de inserción con claves duplicadas.

Es recomendable, si trabajas en entorno multiusuario, que cambies esa
select por @@IDENTITY.

Saludos,

Juan Carlos Paramá


"Roberto M. Oliva" escribió en el mensaje de noticias
news:
Hola!

Yo suelo ejecutar la siguiente sentencia, que vale para cualquier base
de datos:

SELECT MAX(id) FROM Tabla

Tienes que meter la insercion y esta consulta en una misma
transaccion, para asegurarte de que nadie inserta un registro entre
medias y te cambia el id máximo.

Saludos
Roberto M. Oliva

On 26 feb, 10:23, R3 wrote:
Hola a

Realizo una inserción en una tabla donde el ID es automático. ¿existe una
manera de averiguar la ID que me pone al nuevo registro?

Muchas gracias.
Respuesta Responder a este mensaje
#4 Juan Carlos Paramá
12/03/2007 - 18:28 | Informe spam
Hola,

Perdón, no recordaba el autonúmerico en el MAX(id). La parte de
inserción con
claves duplicadas no se aplica en este caso (solo si la inserción del id
fuese manual).
El resto si es aplicable.

Saludos,

Juan Carlos Paramá

"Juan Carlos Paramá" escribió en el mensaje de
noticias news:
Hola,

Hay que tener cuidado con eso, dependiendo del nivel de aislamiento de
la transacción puedes leer un valor que no sea el que tu has insertado. En
el modo de aislamiento por defecto (Read Commited) si otra transacción
creo un nuevo registro y efectuo el COMMIT entre tu insert y tu select
leeras el valor de ese otro insert en vez del tuyo. Además, más común aún,
como probablemente ambos habreis leido el mismo valor de ID el segundo que
realice el commit obtendrá un error de inserción con claves duplicadas.

Es recomendable, si trabajas en entorno multiusuario, que cambies esa
select por @@IDENTITY.

Saludos,

Juan Carlos Paramá


"Roberto M. Oliva" escribió en el mensaje de noticias
news:
Hola!

Yo suelo ejecutar la siguiente sentencia, que vale para cualquier base
de datos:

SELECT MAX(id) FROM Tabla

Tienes que meter la insercion y esta consulta en una misma
transaccion, para asegurarte de que nadie inserta un registro entre
medias y te cambia el id máximo.

Saludos
Roberto M. Oliva

On 26 feb, 10:23, R3 wrote:
Hola a

Realizo una inserción en una tabla donde el ID es automático. ¿existe una
manera de averiguar la ID que me pone al nuevo registro?

Muchas gracias.




Respuesta Responder a este mensaje
#5 Roberto M. Oliva
14/03/2007 - 10:13 | Informe spam
Hola!

Efectivamente que hay que tener cuidado en un entorno multiusuario.
Por eso he especificado que hay que meter el insert y el select
max(id) en una transaccion.
En el momento que se abre una transaccion, en Read commited, nadie
puede hacer un insert. Con lo cual no veo el problema.

Un saludo
Roberto M. Oliva


On Mar 12, 5:28 pm, Juan Carlos Paramá
wrote:
Hola,

Hay que tener cuidado con eso, dependiendo del nivel de aislamiento de
la transacción puedes leer un valor que no sea el que tu has insertado. En
el modo de aislamiento por defecto (Read Commited) si otra transacción creo
un nuevo registro y efectuo el COMMIT entre tu insert y tu select leeras el
valor de ese otro insert en vez del tuyo. Además, más común aún, como
probablemente ambos habreis leido el mismo valor de ID el segundo que
realice el commit obtendrá un error de inserción con claves duplicadas.

Es recomendable, si trabajas en entorno multiusuario, que cambies esa
select por @@IDENTITY.

Saludos,

Juan Carlos Paramá

"Roberto M. Oliva" escribió en el mensaje de noticiasnews:
Hola!

Yo suelo ejecutar la siguiente sentencia, que vale para cualquier base
de datos:

SELECT MAX(id) FROM Tabla

Tienes que meter la insercion y esta consulta en una misma
transaccion, para asegurarte de que nadie inserta un registro entre
medias y te cambia el id máximo.

Saludos
Roberto M. Oliva

On 26 feb, 10:23, R3 wrote:

> Hola a

> Realizo una inserción en una tabla donde el ID es automático. ¿existe una
> manera de averiguar la ID que me pone al nuevo registro?

> Muchas gracias.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida