La respuesta de @Adrian Cornish es correcta. Sin embargo, hay otra advertencia para descartar una clave primaria existente. Si esa tabla principal está siendo utilizada como clave externa por otra tabla, obtendrá un error al intentar soltarla. En algunas versiones de mysql, el mensaje de error estaba mal formado (a partir de 5.5.17, este mensaje de error sigue siendo
alter table parent drop column id;
ERROR 1025 (HY000): Error on rename of
'./test/#sql-a04_b' to './test/parent' (errno: 150).
Si desea eliminar una clave principal a la que hace referencia otra tabla, primero deberá eliminar la clave externa en esa otra tabla. Puede volver a crear esa clave externa si aún la desea después de volver a crear la clave primaria.
Además, cuando se usan claves compuestas, el orden es importante. Estas
1) ALTER TABLE provider ADD PRIMARY KEY(person,place,thing);
and
2) ALTER TABLE provider ADD PRIMARY KEY(person,thing,place);
No son lo mismo. Ambos imponen la unicidad en ese conjunto de tres campos, sin embargo, desde un punto de vista de indexación, hay una diferencia. Los campos están indexados de izquierda a derecha. Por ejemplo, considere las siguientes consultas:
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 puede usar el índice de clave primaria en la declaración ALTER 1
A puede usar el índice de clave primaria en la declaración ALTER 2
C puede usar cualquiera de los índices
D no puede usar ninguno de los índices
A usa los dos primeros campos en el índice 2 como índice parcial. A no puede usar el índice 1 porque no conoce la porción del lugar intermedio del índice. Sin embargo, aún podría ser capaz de usar un índice parcial en una sola persona.
D no puede usar ninguno de los índices porque no conoce a la persona.
Vea los documentos de mysql aquí para más información.