@Adrian Cornish è corretta. Tuttavia, vi è un altro avvertimento per eliminare una chiave primaria esistente. Se la chiave primaria viene utilizzata come chiave esterna da un'altra tabella, si verificherà un errore quando si tenta di rilasciarlo. In alcune versioni di MySQL il messaggio di errore c'era malformati (come del 5.5.17, questo messaggio di errore è ancora
alter table parent drop column id;
ERROR 1025 (HY000): Error on rename of
'./test/#sql-a04_b' to './test/parent' (errno: 150).
Se si vuole far cadere una chiave primaria che viene riferito da un altro tavolo, si dovrà far cadere la chiave esterna in questo altro tavolo prima. è possibile ricreare quella chiave esterna se si vuole ancora dopo si ricrea la chiave primaria.
Inoltre, quando si utilizza chiavi composte, l'ordine è importante. Questi
1) ALTER TABLE provider ADD PRIMARY KEY(person,place,thing);
and
2) ALTER TABLE provider ADD PRIMARY KEY(person,thing,place);
non sono il stessa cosa. Entrambi fanno rispettare l'unicità su quel set di tre campi, tuttavia da un punto di vista dell'indicizzazione c'è una differenza. I campi sono indicizzati da sinistra a destra. Ad esempio, considerare le seguenti domande:
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 può usare l'indice della chiave primaria ALTER 1
A può utilizzare l'indice chiave primaria ALTER 2
C può utilizzare sia indice
D non è possibile utilizzare né l'indice
A utilizza i primi due campi dell'indice 2 come indice parziale. A non può usare l'indice 1 perché non conosce la porzione intermedia dell'indice. Potrebbe comunque essere in grado di utilizzare un indice parziale solo per persona.
D non può utilizzare alcun indice perché non conosce la persona.
Vedere i documenti mysql here per ulteriori informazioni.
Questo aggiunge tre pks unico, non una pk composito. – David542
@ David542 No, non si può avere solo 1 chiave primaria. –
@David: è una singola chiave primaria composta da più campi, ovvero una chiave composta. –