2010-04-24 12 views
5

Mam tabeli w MySQL, który ma klucz podstawowy:Jak zmienić klucz podstawowy w SQL na 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 |  | 
+---------------+-------------+------+-----+---------+-------+ 

ale chciałem, aby to AUTO_INCREMENT.

Poniższa instrukcja nie powiodła się. Jak można go zmodyfikować, aby działał? Dzięki

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

Odpowiedz

7

Zostaw wyłączyć atrybut primary key: Atrybuty

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT; 

Niektóre kolumny, takie jak PRIMARY KEY, nie są dokładnie właściwości kolumny tyle skróty do innych rzeczy. Kolumna oznaczona na przykład PRIMARY KEY jest umieszczana w indeksie PRIMARY. Ponadto wszystkie kolumny w indeksie PRIMARY otrzymują atrybut NOT NULL. (Na marginesie: aby mieć klucz podstawowy z wieloma kolumnami, należy użyć oddzielnej klauzuli ograniczenia zamiast wielu atrybutów kolumny PRIMARY KEY). Ponieważ kolumna znajduje się już w indeksie PRIMARY, nie trzeba jej określać ponownie podczas modyfikowania kolumna. Wypróbuj SHOW CREATE TABLE gifts;, aby zobaczyć wpływ używania atrybutu PRIMARY KEY.

+0

wielkie dzięki! "ALTER TABLE prezenty MODIFY giftID AUTO_INCREMENT" wygląda na to, że potrzebujesz "INT" - "alter table gifts modify giftID int auto_increment;" –

Powiązane problemy