Insertar valores en una fila con auto-increment

publicado por: Anonymous

Necesito saber cómo insertar datos en la fila de una tabla en la cual uno de los campos es un auto-increment. La tabla, llamada ’empleados’, ya tiene unos 30 registros y el ‘codigoempleado’ es la columna auto-increment, que va por el número 30.

Yo he probado a introducir lo siguiente:

insert into empleados values(default, 'perico', 'palotes', 'de dios', 4587, '[email protected]', 'MADR-ES', 3, 'Representante ventas')

Especificando: la primera columna de la tabla, al ser un auto-increment, he pensado en meterle un valor “default” pero parece que no funciona, y meter una constante ’31’, que es el siguiente número que debería aparecer no me parece lo más correcto.

EDIT: No puedo meterle un null, la columna es not null.

Se me ha ocurrido también que puede funcionar si especifico todas las columnas menos esta y les introduzco sus valores, pero me parece que no es la mejor solución y debe haber algo más que se pueda hacer.

¿Qué debería pues meter en el primer valor de la sentencia insert para que se rellente el campo auto-increment automáticamente?¿Hay alguna palabra clave para que el campo se autorellene?

solución

Según la documentación de MySQL, lo recomendado es insertar NULL:

http://dev.mysql.com/doc/refman/5.7/en/create-table.html

An integer or floating-point column can have the additional attribute AUTO_INCREMENT. When you insert a value of NULL (recommended) or 0 into an indexed AUTO_INCREMENT column, the column is set to the next sequence value. Typically this is value+1, where value is the largest value for the column currently in the table. AUTO_INCREMENT sequences begin with 1.

El valor “0” funciona a menos que tengas el modo NO_AUTO_VALUE_ON_ZERO activado.


También especifica la documentación que no es necesario especficar un valor para dicho campo al insertar datos en los otros campos de la fila, y que se puede insertar NULL si el campo es NOT NULL o asignar un valor específico (10, 25, 1000, …) y la secuencia tendrá como nuevo valor el más grande de la columna.

http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html

No value was specified for the AUTO_INCREMENT column, so MySQL assigned sequence numbers automatically. You can also explicitly assign 0 to the column to generate sequence numbers, unless the NO_AUTO_VALUE_ON_ZERO SQL mode is enabled. If the column is declared NOT NULL, it is also possible to assign NULL to the column to generate sequence numbers. When you insert any other value into an AUTO_INCREMENT column, the column is set to that value and the sequence is reset so that the next automatically generated value follows sequentially from the largest column value.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *