2010-04-24 7 views
5

Ich habe eine Tabelle in MySQL, die einen Primärschlüssel hat:Wie ändert man einen Primärschlüssel in SQL in 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 |  | 
+---------------+-------------+------+-----+---------+-------+ 

aber ich wollte es auto_increment machen.

Die folgende Anweisung ist fehlgeschlagen. Wie kann es geändert werden, damit es funktioniert? Dank

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

Antwort

7

das primary key Attribut weglassen:

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT; 

Bestimmte Spaltenattribute, wie PRIMARY KEY, sind nicht gerade Eigenschaften der Spalte so viel wie Verknüpfungen für andere Dinge. Eine Spalte mit der Nummer PRIMARY KEY wird beispielsweise in den Index PRIMARY gestellt. Darüber hinaus erhalten alle Spalten im PRIMARY Index das NOT NULL Attribut. (Nebenbei: Um einen mehrspaltigen Primärschlüssel zu haben, müssen Sie eine separate Constraint-Klausel statt mehrerer PRIMARY KEY Spaltenattribute verwenden.) Da sich die Spalte bereits im PRIMARY -Index befindet, müssen Sie sie beim Ändern der Option nicht erneut angeben Säule. Versuchen Sie SHOW CREATE TABLE gifts;, um die Auswirkungen der Verwendung des Attributs PRIMARY KEY zu sehen.

+0

vielen dank! "ALTER TABLE Geschenke MODIFY giftID AUTO_INCREMENT" scheint, als müsste "INT" - "alter table gifts modify giftID int auto_increment;" –