Hm.
Irgendwie macht das keinen Sinn, was du vor hast.
Ein primärer Schlüssel ist nur zum identifizieren des Datensatzes, und nichts anderem. Deswegen würde ich diesen auch in ruhe lassen, und das lieber mit einer order-spalte lösen.
Also einfach eine Spalte, in dem Zahlen stehen. Und nach diesen Zahlen Ordnest du die Datensätze. Sprich:
PHP:1
| select * from table order by order_column; |
So muss man nicht die Gesamte Datenbank aktualisieren, wenn ein Datensatz gelöscht wird.
Und Nummerieren kannst du die Datensätze bei der ausgabe ja einfach durch einen Counter den du mit $counter++; mitzählen lässt.
Und wenn du zwei Datensätze vertauschen willst, machste einfach bei dem ersten Datensatz
PHP:1
| datensatz_order_nummer+1 |
und bei dem zweiten
PHP:1
| datensatz_order_nummer-1 |
feddich.
Gibt mit sicherheit noch elegantere Methoden. Also warte mal ab, was die anderen so sagen.