Sonntag, 25. November 2018
Für ein Projekt habe ich mich heute einer vorzüglichen mehrsprachigen Länder-Liste bedient. Einziges Problem: Alle Tabellen in meiner Datenbankstruktur besitzen als Primary Key die Spalte id mit aufsteigenden Werten. Wie fügt man aufsteigende Werte in eine neue Spalte einer bestehenden MySQL-Tabelle ein, bevor man den Primary Key von der Spalte code entfernt und die Spalte id als Primary Key definiert? Ganz einfach:
SET @pos := 50;
UPDATE laender SET id = ( SELECT @pos := @pos + 1 ) ORDER BY code ASC;
Quelle: How to update a MySQL column with ascending numbers
Hinweis: Auf Grund von bereits bestehenden Verknüpfungen mit der ursprünglichen Länder-Tabelle (die aus knapp 20 Ländern bestand) entschied ich mich, die IDs für die bestehenden Länder zu übertragen. Deshalb startete ich für die vollständige Liste mit einem Primary Key von 50, um nicht mit den alten Keys in Konflikt zu geraten.