@Adrian Cornish відповідь правильна. Однак є ще один застереження щодо скидання існуючого первинного ключа. Якщо цей первинний ключ використовується в якості іноземного ключа в іншій таблиці, ви отримаєте помилку при спробі скинути його. У деяких версіях mysql повідомлення про помилку було неправильно сформовано (станом на 5.5.17 це повідомлення про помилку все ще є)
alter table parent drop column id;
ERROR 1025 (HY000): Error on rename of
'./test/#sql-a04_b' to './test/parent' (errno: 150).
Якщо ви хочете скинути первинний ключ, на який посилається інша таблиця, вам доведеться спочатку скинути зовнішній ключ у цю іншу таблицю. Ви можете відтворити цей зовнішній ключ, якщо ви все ще хочете його після відтворення первинного ключа.
Також при використанні складових ключів важливий порядок. Ці
1) ALTER TABLE provider ADD PRIMARY KEY(person,place,thing);
and
2) ALTER TABLE provider ADD PRIMARY KEY(person,thing,place);
не одне й те саме. Вони обидва забезпечують унікальність на наборі з трьох полів, однак з точки зору індексування є різниця. Поля індексуються зліва направо. Наприклад, розгляньте такі запити:
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 може використовувати індекс первинного ключа в операторі ALTER 1
A може використовувати індекс первинного ключа в операторі ALTER 2
C може використовувати будь-який індекс
D не може використовувати жоден індекс
A використовує перші два поля в індексі 2 як частковий індекс. Індекс 1 не може використовувати, оскільки він не знає проміжну частину індексу. Можливо, все-таки вдасться використовувати частковий індекс лише для людини.
Не можу використовувати жоден індекс, тому що він не знає людину.
Дивіться документи mysql тут для отримання додаткової інформації.