Linuchs: Primärschlüssel nachträglich setzen

problematische Seite

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

  1. problematische Seite

    Hallo,

    Bitte ergänzt die Seite

    Es ist ein Wiki.

    Gruß
    Kalk

    1. problematische Seite

      Du meinst, ich soll das machen?

      Na schau'n mer mal, habe ich noch nie gemnacht.

      1. problematische Seite

        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.

        1. problematische Seite

          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

        2. problematische Seite

          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

          --
          Du kannst das Projekt SELFHTML unterstützen,
          indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
  2. problematische Seite

    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

    1. problematische Seite

      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

      1. problematische Seite

        Hallo,

        Duplikate oder Trinitate

        Triplikate.

        Live long and pros healthy,
         Martin

        --
        Nein, ich bin kein Klugscheißer. Ich weiß es wirklich besser.
        1. problematische Seite

          Hallo Martin,

          Triplikate.

          Oder Trinitäten...

          Jedenfalls frage ich mich, wozu man einer importierten CSV Datei nachträglich IDs anflanschen muss.

          Rolf

          --
          sumpsi - posui - obstruxi
          1. problematische Seite

            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.

  3. problematische Seite

    Hallo Linuchs,

    vor ein paar Tagen hatten wir die Diskussion, wie man einen PRIMARY KEY nachträglich in eine Tabelle einfügen kann.

    Stimmt.

    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

    1. problematische Seite

      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

      --
      sumpsi - posui - obstruxi