Primärschlüssel nachträglich setzen
Linuchs
- sql
- wiki
0 Tabellenkalk0 Linuchs
0 Tabellenkalk1 tk0 Rolf B
Moin,
vor ein paar Tagen hatten wir die Diskussion, wie man einen PRIMARY KEY nachträglich in eine Tabelle einfügen kann.
Die „problematische Seite“ (5. Juli 2020 um 13:21 Uhr geändert) wurde wohl daraufhin neu erstellt.
Dort wird vorausgesetzt, dass es eine Spalte gibt, die keine mehrfachen Werte enthält. Also zum PRIMARY KEY gemacht werden kann.
Wenn doch, kann der PRIMARY KEY nicht erzeugt werden.
Bitte ergänzt die Seite um die Möglichkeit, unabhängig von mehrfachen Daten einen PRIMARY KEY zu setzen:
ALTER TABLE `tabelle_name`
ADD `id` INT NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`id`)
Habe ich heute ausprobiert, funktioniert.
Linuchs
Hallo,
Bitte ergänzt die Seite
Es ist ein Wiki.
Gruß
Kalk
Du meinst, ich soll das machen?
Na schau'n mer mal, habe ich noch nie gemnacht.
bin angemeldet, aber wenn ich dort auf [bearbeiten] klicke, kommt
Sie bearbeiten diese Seite unangemeldet.
Und dann kann ich auch nur die Quellen bearbeiten, nicht den eigentlichen Text.
Hallo,
bin angemeldet, aber wenn ich dort auf [bearbeiten] klicke, kommt
Sie bearbeiten diese Seite unangemeldet.
Ich weiß nicht, wie der Anmeldevorgang abläuft. Vielleicht musst du erst freigeschaltet werden?
Und dann kann ich auch nur die Quellen bearbeiten, nicht den eigentlichen Text.
Es gibt fast ganz oben zwischen "Lesen" und "Fragen" den Punkt "Bearbeiten".
Gruß
Kalk
Hallo Linuchs,
bin angemeldet, aber wenn ich dort auf [bearbeiten] klicke, kommt
hier im Forum.
Sie bearbeiten diese Seite unangemeldet.
dort im Wiki.
Wiki und Forum benötigen getrennte Anmeldungen. Es ist mit vertretbarem Aufwand nicht leistbar, die Benutzerverwaltungen zusammenzuführen.
Bis demnächst
Matthias
Hallo,
Bitte ergänzt die Seite um die Möglichkeit, unabhängig von mehrfachen Daten einen PRIMARY KEY zu setzen:
ALTER TABLE `tabelle_name` ADD `id` INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (`id`)
Habe ich heute ausprobiert, funktioniert.
Wie muss ich mir das vorstellen, gab es die Spalte id
noch gar nicht?
Gruß
Kalk
gab es die Spalte id noch gar nicht?
Nein, habe eine CSV-Datei in eine leere Tabelle importiert. Da kann es in allen Spalten Duplikate oder Trinitate geben.
Linuchs
Hallo,
Duplikate oder Trinitate
Live long and pros healthy,
Martin
Hallo Martin,
Triplikate.
Oder Trinitäten...
Jedenfalls frage ich mich, wozu man einer importierten CSV Datei nachträglich IDs anflanschen muss.
Rolf
zum Beispiel, um Sätze gezielt ändern oder löschen zu können.
Nehmen wir das Lied La Paloma. Kommt dreimal vor. Einmal bereits mit Angabe des Komponisten. Die beiden anderen sollen weg.
Hallo Linuchs,
vor ein paar Tagen hatten wir die Diskussion, wie man einen PRIMARY KEY nachträglich in eine Tabelle einfügen kann.
Dort wird vorausgesetzt, dass es eine Spalte gibt, die keine mehrfachen Werte enthält. Also zum PRIMARY KEY gemacht werden kann.
Die erste Version hatte den Query zum Anlegen der Spalte drin (so wie er auch in meinem Posting stand), Matthias hat ihn dann aufgrund deiner Nachfrage aber auf die CHANGE-Variante geändert. Ich habe jetzt mal beide Varianten reingesetzt und den Artikel gleichzeitig noch etwas ergänzt.
ALTER TABLE `tabelle_name` ADD `id` INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (`id`)
Der Query ist richtig, es reicht aber eine ADD
-Zeile (siehe Wiki). Allerdings fehlt in deinem Query die Angabe an welcher Stelle die neue Spalte stehen soll (FIRST
oder AFTER spalte
hinter AUTO_INCREMENT
), ohne die wird zumindest bei mir die Spalte hinten dran gehängt.
Gruß,
Tobias
Hallo tk,
dem DBMS ist es ziemlich schnuppe, wo die Spalte steht. Die ID muss nicht die erste Spalte sein.
Eine FIRST/AFTER Klausel dient hauptsächlich ästhetischen Zwecken 😉
Aber du hast natürlich insofern recht, dass man das zumindest erwähnen sollte. Im Wiki ist's auch drin.
Rolf