Cuando definimos un campo (normalmente una clave primaria) de una tabla de base de datos como Autonumérico lo que estamos indicando es que, el propio gestor dedatos, al introducir un nuevo registro en la tabla generará un valor consecutivo para la secuencia, aislándonos del problema que representaría el tener que hacerlo nosotros mismos (transacciones, bloqueos, etc...).

Una vez insertado el registro en la mayor parte de las ocasiones es necesario averiguar qué valor se ha generado. Los SGBD más importantes del mercado ofrecen una forma sencilla de obtener este dato, aislándonos del hecho que desde que lo hayamos generado hasta que lo consultemos (dentro de la misma conexión) éste ya puede haber aumentado (en una inserción paralela de otra conexión).

La forma de obtener esta información es la siguiente:

· SQL Server 2000 o superior:

SELECT SCOPE_IDENTITY()

en SQL 7.0 y anteriores era SELECT IDENTITY() que aún funciona, pero que devuelve el último autonumérico generado en cualquier lugar, no dentro del ámbito actual, por lo que hay que usarlo con más cuidado.

· MySQL:

SELECT LAST_INSERT_ID()

· Oracle:

SELECT Secuencia.CURRVAL FROM DUAL

En Oracle no existen los autonuméricos como tales. Lo que existen son las secuencias que se definen aparte y que, como su propio nombre indica, son secuencias con nombre que se ocupan de generar números consecutivos que luego asignamos a un determinado campo para "simular" un campo autonumérico. En la sentencia anterior hay que especificar, por tanto, el nombre de la secuencia para obtener su último valor.

Escrito por un humano, no por una IA