MySQL Inhalt per Doppelklick bearbeiten können

  • Hallo zusammen,
    ich habe mich in letzter Zeit mal ein wenig mit MySQL Datenbanken beschäftigt und möchte es gerne so haben, dass wenn ich mit einem Doppelklick auf den Datensatz klicke, ich diesen direkt bearbeiten kann.


    In Datenbanken von WordPress ist es zum Beispiel so, dass ich links Buttons habe zum bearbeiten, löschen usw. und wenn ich dann auf einen Eintrag in einer Zeile klicke, öffnet sich ein Textfeld, in dem ich die aktuellen Daten bearbeiten kann. Wie kann ich dies auch in meiner Datenbank so einrichten?


    Beim probieren habe ich zufällig gesehen, dass wenn ich einen Primärschlüssel setze, ich dann die Tabellen so bearbeiten kann. Aber was hat das mit dem Schlüssel auf sich? Wie ich das verstanden habe, sind das Zeilen bzw. werde die niemals zwei mal vorkommen dürfen. Also zum Beispiel ID's o.ä.


    Wenn ich einen Unique Schlüssel bzw. ein Index setze, funktioniert das ganze auch. Nur beim bearbeiten, ist das ganze etwas anders, sodass mit z.B. immer der Reset der Daten zum Null wert angeboten wird usw.


    Was hat das ganze denn mit den Schlüsseln zutun und gibt es nicht vielleicht sogar noch eine andere Möglichkeit, um das gleiche Ergebnis ohne das setzen der Schlüssel zu erreichen?


    Gruß Janik

  • Hallo SparkleBird,


    der Primärschlüssel bei Mysql ist (verinfacht gesagt) nichts anderes als eine Möglichkeit einen Datensatz absolut eindeutig zu identifizieren!


    Wenn du einen Satz mit doppelklick bearbeitest dann muss dieser ja eindeutig identifizierbar sein - denn im Hintergrund macht jedes Tool nichts anderes als mit SQL mit der Datenbank reden.
    Nehmen wir einfach an du hast ein Telefonbuch - da gibt es z.B. keinen wirklichen eindeutigen Schlüssel.
    Wenn du dort die Zeile mit "Heinz Müller" auf "Hugo Müller" änderst, was soll denn das Tool tun?
    Ein SQL a la "update telefonbuch set name = 'Hugo Müller' where name = 'Heinz Müller'" würde wahrscheinlich den Namen von ein paar zehntausend Heinz Müllern gleichzeitig ändern.


    Wenn du nun aber hingehst und den Leuten in deinem Telefonbuch eine eindeutige Nummer (Primärschlüssel) gibst, so z.B. einfach eine fortlaufende Nummer die du 'teilnehmer_nr' nennst - dann sieht es wieder anders aus.
    Beim editieren eines Wertes kann dein Tool nun folgenden Update bauen:
    "update telefonbuch set name = 'Hugo Müller' where teilnehmer_nr = 0815"


    Und bei diesem Update kann sich das Tool sicher sein nur genau den einen Satz zu ändern den du auch ändern wolltest - denn dank dem Primärschlüssel 'teilnehmer_id' - der eindeutig (also unique) ist, ist sichergestellt dass es jede teilnehmer_nr nur ein einziges Mal gibt.


    Im Allgemeinen gilt eine Tabelle ohne Primärschlüssel übrigens als schlechtes Datenbankdesign und sollte vermieden werden.


    Sowas hat man mal wenn man Massendaten rein-, oder rausschauffelt - aber sobald man sinnvoll mit den Daten arbeiten will ist ein Primärschlüssel eine notwendige Sache.
    Notfalls baut man sich einen "unechten" Primärschlüssel indem man einfach eine laufende Nr. für jeden Datensatz vergibt, wenns keinen sinnvollen anderen Primärschlüssel gibt.


    Übrigens darf ein Primärschlüssel auch mehrere Spalten tiefe haben.
    Bei unserem Telefonbuch könnte der Primärschlüssel also: "Name, Adresse, Telefonnummer" sein. Dann wäre er vielleicht sogar wieder eindeutig und wir müssten uns keine teilnehmer_id ausdenken :)


    Noch Fragen?


    Thomas