Los campos de tipo identity no existen n MYSQL (tampoco en otros DBMS como Oracle, por ejemplo). Lo que se usa en MySQL como tales son los campos de tipo numérico entero (TINYINT, SMALLINT, MEDIUMINT, INT y BIGINT), a los que se les asigna el atributo de AUTO_INCREMENT.
Pero a diferencia de SQL Server, los campos AI,
no pueden generar números anticipadamente al INSERT, esto quiere decir que no podrás generar un próximo valor para luego insertarlo, del mismo modo que SQL Server, proque la incrementación del valor del campo lo gestiona el propio MySQL.
Lo que se hace en ese caso es dejar sin valor ese campo en el INSERT, si indicas los campos, o bien poner NULL donde va:
Caso sin el campo:
Caso con el campo:
Caso sin indicar campos:
Ten en cuenta que si insertas manualmente un valor, ese valor pasará a ser el máximo AI generado, y todo INSERT posterior tomará ese valor como referencia.
Cuando usas este tipo de cosas en MySQL lo que debes hacer es
1) Insertar en la tabla el registro padre.
2) Recuperar el valor autogenerado con la función LAST_INSERT_ID().
3) Usarlo como valor para la tabla dependiente.
Nota: Recuperar el ID generado debe ser la
primera tarea inmediatamente posterior al insert, porque si ejecutas cualquier otra, el valor devuelto será CERO.
¿Se entiende?