@ Adrian Cornish'in cevabı doğru. Ancak, mevcut bir birincil anahtarı atmak için başka bir uyarı daha var. Birincil anahtar başka bir tablo tarafından yabancı anahtar olarak kullanılıyorsa, bırakmaya çalışırken bir hata alırsınız. MySQL'in bazı sürümlerinde hata iletisi hatalı biçimlendirildi (5.5.17 itibariyle bu hata iletisi hala
alter table parent drop column id;
ERROR 1025 (HY000): Error on rename of
'./test/#sql-a04_b' to './test/parent' (errno: 150).
Başka bir tablo tarafından başvurulan bir birincil anahtarı bırakmak istiyorsanız, önce yabancı anahtarı o tabloya bırakmanız gerekir. Birincil anahtarı yeniden oluşturduktan sonra hala isterseniz, bu yabancı anahtarı yeniden oluşturabilirsiniz.
Ayrıca, bileşik anahtarlar kullanılırken sıra önemlidir. Bunlar
1) ALTER TABLE provider ADD PRIMARY KEY(person,place,thing);
and
2) ALTER TABLE provider ADD PRIMARY KEY(person,thing,place);
aynı şey değil. Her ikisi de bu üç alan kümesi üzerinde benzersizliği zorunlu kılar, ancak bir indeksleme açısından bir fark vardır. Alanlar soldan sağa dizine eklenir. Örneğin, aşağıdaki sorguları göz önünde bulundurun:
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 deyiminde
birincil anahtar dizini kullanabilir 1 A ALTER deyimi 2'de birincil anahtar dizinini
kullanabilir C her iki dizini kullanabilir
D her iki dizini kullanamaz
A, dizin 2'deki ilk iki alanı kısmi dizin olarak kullanır. A, dizin 1'i kullanamaz çünkü dizinin ara yeri bölümünü bilmez. Yine de, sadece kişi üzerinde kısmi bir dizin kullanabilir.
D kişiyi tanımıyor çünkü her iki endeksi kullanamazsınız.
MySQL dokümanlar bakın burada daha fazla bilgi için.