2010-04-24 50 views
5

Tengo una tabla en MySQL que tiene una clave principal:¿Cómo cambiar una clave primaria en SQL a auto_increment?

mysql> desc gifts; 
+---------------+-------------+------+-----+---------+-------+ 
| Field   | Type  | Null | Key | Default | Extra | 
+---------------+-------------+------+-----+---------+-------+ 
| giftID  | int(11)  | NO | PRI | NULL |  | 
| name   | varchar(80) | YES |  | NULL |  | 
| filename  | varchar(80) | YES |  | NULL |  | 
| effectiveTime | datetime | YES |  | NULL |  | 
+---------------+-------------+------+-----+---------+-------+ 

pero quería hacerlo AUTO_INCREMENT.

Falló la siguiente declaración. ¿Cómo se puede modificar para que pueda funcionar? gracias

mysql> alter table gifts modify giftID int primary key auto_increment; 
ERROR 1068 (42000): Multiple primary key defined 

Respuesta

7

dejar fuera el atributo primary key: Atributos

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT; 

determinada columna, como PRIMARY KEY, no son exactamente las propiedades de la columna tanto como atajos para otras cosas. Una columna marcada PRIMARY KEY, por ejemplo, se coloca en el índice PRIMARY. Además, todas las columnas en el índice PRIMARY reciben el atributo NOT NULL. (Aparte: para tener una clave principal de varias columnas, debe usar una cláusula de restricción separada en lugar de múltiples atributos de columna PRIMARY KEY). Dado que la columna ya está en el índice PRIMARY, no necesita especificarla nuevamente cuando modifique la columna. Pruebe SHOW CREATE TABLE gifts; para ver los efectos del uso del atributo PRIMARY KEY.

+0

¡Gracias! "ALTER TABLE gifts MODIFY giftID AUTO_INCREMENT" parece necesitar "INT" - "modificar los regalos de la mesa modificar giftID int auto_increment;" –

Cuestiones relacionadas