2010-04-24 23 views
5

Ben bir birincil anahtarı olan MySQL bir tablo vardır:SQL'de birincil anahtar auto_increment olarak nasıl değiştirilir?

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 |  | 
+---------------+-------------+------+-----+---------+-------+ 

ama AUTO_INCREMENT yapmak istedim.

Aşağıdaki ifade başarısız oldu. Çalışması için nasıl değiştirilir? , Gibi PRIMARY KEY

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT; 

Bazı sütun niteliklerini tam olarak başka şeyler için kısayol olarak çok sütunun özellikleri değildir: teşekkürler

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

cevap

7

primary key niteliğini kapalı bırakın. Örneğin, PRIMARY KEY işaretli bir sütun, PRIMARY dizinine yerleştirilir. Dahası, PRIMARY dizinindeki tüm sütunlara NOT NULL özniteliği verilir. (Yan yana: çok sütunlu bir birincil anahtara sahip olmak için, birden çok PRIMARY KEY sütun özniteliği yerine ayrı bir kısıtlama maddesi kullanmanız gerekir.) Sütun zaten PRIMARY dizinindeyse, değiştirdiğinizde yeniden belirtmeniz gerekmez. sütunu. PRIMARY KEY özniteliğinin kullanılmasının etkilerini görmek için SHOW CREATE TABLE gifts;'u deneyin.

+0

Harika teşekkürler! "ALTER TABLE armağanları giftID AUTO_INCREMENT", "INT" ye ihtiyaç duyuyor gibi görünüyor - "alter table gifts, giftID int auto_increment'i değiştiriyor;" –

İlgili konular