sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la forma estándar de obtener la última identificación de inserción?

Consulte esta respuesta Recuperar ID de fila insertada en SQL

En resumen, no hay una forma de hacer esto entre bases de datos, excepto MAX(ID), pero ese no es un resultado garantizado y tiene muchas trampas, por ejemplo,

  • otras inserciones pueden aparecer entre la última inserción y la consulta máxima
  • no se puede usar con tablas de transacciones altas (max emitirá un bloqueo de lectura, los métodos específicos de rdbms no leen de ninguna tabla)

El estándar ANSI que se relaciona con identidad/número automático/incremento automático/secuencias apareció por primera vez en SQL:2003 pendiente de implementación por todos los RDBMS principales. Lo más probable es que se parezca a las secuencias de Oracle/PostgreSQL.

Otro cambio en SQL:2003 es la OUTPUT USING CLAUSE pero hay muy poca información al respecto. Sybase y SQL Server han hecho cosas diferentes con él, por lo que aún no está claro cómo funcionará. SQL Server lo implementa como

INSERT INTO TBL(..)
OUTPUT inserted.identity_col
INTO @sometablevar
VALUES(..)