2011-05-11 19 views
6

digamos que tenemos una tabla con una sola columna, id (que es la clave primaria)Mysql - insertar en la tabla, con sólo un auto incrementando la columna

¿Cómo insertar una nueva fila en la tabla sin especificar una identificación?

yo probamos este

INSERT INTO A (`id`) VALUES (NULL) 

y no funciona

Editar: me olvidó mencionar que la identificación, la clave principal tiene AUTO_INCREMENT y NO atributo NULL.

Edición 2: El error exacto cuando se ejecuta la consulta anterior es

Column 'id' cannot be null 
+0

¿Por qué no compartir con nosotros cómo funciona exactamente? –

+0

El campo PK no permite valores duplicados ni valores NULOS – Dalen

+0

Los campos de clave primaria deben ser NOT NULL. –

Respuesta

10

Tan pronto como 'id' como el incremento automático de habilitación (suponiendo que la identificación es un número entero), que sólo puede hacer:

INSERT INTO A (id) values (null) 

y 'id' mantendrá incrementando cada vez.

+0

No creo que esto funcione. Lo intenté e intenté insertar el dígito 0. Como estaba intentando insertar 5 veces, produce un error de entrada duplicado. – arvinsim

+1

@arvinsim: Debe haber algún problema con su configuración. MySQL acepta tanto 'NULL' como' 0' como valores para una columna auto_increment, y los interpreta como que significan "use the next ID". – sleske

+0

Esto funcionó para mí con una base de datos MySQL. De hecho, incrementa la identificación cada vez. – Marcin

0

intentar hacerlo sin el `` .. Al igual que en :

inserción en una VALORES (SID) (NULL); // i utilizado en lugar de sid ... Identificación

funcionó bien para mí ..

también wwhile crear la tabla A, especifique único (SID) ... es decir

crear la tabla A (sid int (3) no nulo auto_increment unique (sid));

+2

El estilo de cotización no debería cambiar nada –

2

solo funciona si usa una clave primaria auto_increment (PK) ya que cada PK debe tener un valor único, no nulo.

drop table if exists A; 
create table A 
(
id int unsigned not null auto_increment primary key 
) 
engine=innodb; 

insert into A (id) values (null),(null); 

mysql> select * from A order by id; 
+----+ 
| id | 
+----+ 
| 1 | 
| 2 | 
+----+ 
2 rows in set (0.00 sec) 
+0

Sí, es un campo de incremento automático – arvinsim

+1

A menos que me falta algo, esa es la configuración descrita en la pregunta: -? –

0

Tuve un problema similar, entonces noté que no aplicaba los cambios cuando cambiaba id a la clave principal + no nulo + automático incremental.

Cuestiones relacionadas