Câu trả lời của @Adrian Cornish là chính xác. Tuy nhiên, có một cảnh báo khác để bỏ khóa chính hiện có. Nếu khóa chính đó đang được sử dụng làm khóa ngoại bởi một bảng khác, bạn sẽ gặp lỗi khi cố gắng thả nó. Trong một số phiên bản của mysql, thông báo lỗi không đúng định dạng (kể từ ngày 5.5.17, thông báo lỗi này vẫn còn
alter table parent drop column id;
ERROR 1025 (HY000): Error on rename of
'./test/#sql-a04_b' to './test/parent' (errno: 150).
Nếu bạn muốn bỏ khóa chính được tham chiếu bởi một bảng khác, trước tiên bạn sẽ phải bỏ khóa ngoại trong bảng khác đó. Bạn có thể tạo lại khóa ngoại đó nếu bạn vẫn muốn nó sau khi bạn tạo lại khóa chính.
Ngoài ra, khi sử dụng các phím tổng hợp, thứ tự là rất quan trọng. Những
1) ALTER TABLE provider ADD PRIMARY KEY(person,place,thing);
and
2) ALTER TABLE provider ADD PRIMARY KEY(person,thing,place);
không phải là điều tương tự Cả hai đều thực thi tính duy nhất trên bộ ba trường đó, tuy nhiên từ quan điểm lập chỉ mục có một sự khác biệt. Các trường được lập chỉ mục từ trái sang phải. Ví dụ: xem xét các truy vấn sau:
A) SELECT person, place, thing FROM provider WHERE person = 'foo' AND thing = 'bar';
B) SELECT person, place, thing FROM provider WHERE person = 'foo' AND place = 'baz';
C) SELECT person, place, thing FROM provider WHERE person = 'foo' AND place = 'baz' AND thing = 'bar';
D) SELECT person, place, thing FROM provider WHERE place = 'baz' AND thing = 'bar';
B có thể sử dụng chỉ mục khóa chính trong câu lệnh ALTER 1
A có thể sử dụng chỉ mục khóa chính trong câu lệnh ALTER 2
C có thể sử dụng chỉ mục
D không thể sử dụng một trong hai chỉ mục
A sử dụng hai trường đầu tiên trong chỉ mục 2 làm chỉ mục một phần. Không thể sử dụng chỉ mục 1 vì nó không biết phần vị trí trung gian của chỉ mục. Nó vẫn có thể sử dụng một chỉ mục một phần trên người.
Không thể sử dụng một trong hai chỉ số vì nó không biết người.
Xem các tài liệu mysql ở đây để biết thêm thông tin.