2010-04-24 48 views
5

Tôi có một bảng trong MySQL có một khóa chính:Làm cách nào để thay đổi khóa chính trong SQL thành 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 |  | 
+---------------+-------------+------+-----+---------+-------+ 

nhưng tôi muốn làm cho nó AUTO_INCREMENT.

Câu lệnh sau không thành công. Làm thế nào nó có thể được sửa đổi để nó có thể hoạt động? nhờ

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

Trả lời

7

Để lại ngoài khơi primary key thuộc tính:

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT; 

Một số cột thuộc tính, chẳng hạn như PRIMARY KEY, không chính xác tính chất của cột quá nhiều như các phím tắt cho những thứ khác. Ví dụ, một cột được đánh dấu là PRIMARY KEY được đặt trong chỉ mục PRIMARY. Hơn nữa, tất cả các cột trong chỉ số PRIMARY được cung cấp thuộc tính NOT NULL. (Ngoài ra: để có một khóa chính nhiều cột, bạn phải sử dụng một mệnh đề ràng buộc riêng biệt thay vì nhiều thuộc tính cột PRIMARY KEY.) Vì cột đã có trong chỉ mục PRIMARY, bạn không cần chỉ định lại nó khi bạn sửa đổi cột. Hãy thử SHOW CREATE TABLE gifts; để xem ảnh hưởng của việc sử dụng thuộc tính PRIMARY KEY.

+0

cảm ơn tuyệt vời! "Quà tặng ALTER TABLE MODIFY giftID AUTO_INCREMENT" có vẻ như cần "INT" - "thay đổi quà tặng bảng sửa đổi giftID int auto_increment;" –

Các vấn đề liên quan