Fehlermeldung bei Eintrag in die Datenbank
Carl
- datenbank
0 Felix0 Helmut Weber0 Heiko
Hi
Also ich hab ein Formular, dessen Inhalte in die Datenbank eingetragen werden. Das klappt auch Problemlos. Wenn ich allerdings den Zurückbutton benutze und dann die Daten nochmal abschicke, kommt folgende Fehlermeldung zurück:
1062: Duplicate entry '0' for key 1
Ich schätze mal, ich muss irgendwas bei den Einstellungen der Mysql-Tabelle ändern, aber was das ist, weiß ich nicht.
Kann mir jemand helfen?
Gruss
Carl
1062: Duplicate entry '0' for key 1
offensichtlich lässt du den primärschlüssel per formular eintragen.
keine gute idee.
Hall Carl,
1062: Duplicate entry '0' for key 1
Du setzt in der Datenbank einem Feld 2x den gleichen Wert, obwohl Du in den Einstellungen gesagt hast, das der Wert eindeutig sein muss und nur einmal vorkommen kann.
Für gewöhnlich macht man dies um eine eindeutige ID für den Datensatz zu erzeugen und überlässt dies auch der Datenbank (Stichwort: auto_increment).
Gruß
Helmut Weber
Hi Carl,
wirklich keine gute Idee, was Du da machst. Du trägst einmal einen Datensatz in eine Tabelle ein, damit gibt es ihm. Nochmal eintragen geht nicht (sie die anderen Antworten), weil Du dann eine Primärschlüsselverletzung hast (Primärschlüssel=Die Spalten einer Tabelle, die eine Zeile eindeutig identifizieren).
Lösungen:
a) Du hebst den Primärschlüssel auf. KEINE GUTE IDEE, jede Tabelle sollte einen haben.
b) Du führst eine ID ein (auto_increment) und machst die alleinig zum Primärschlüssel. KANN eine Lösung sein, aber nicht, wenn Du einen Eintrag machst und dann merkst es war falsch und Du willst den Eintrag korrigieren (Zurück-Button, korrigieren, nochmal abschicken), denn hast du 2 Einträge: 1. den falschen und 2. den richtigen. Dann ist c) bessser:
c) Nimm die Daten und schaue, ob es schon einen Eintrag mit diesem Primärschlüssel gibt. Wenn nein, mache ein INSERT, wenn ja ein UPDATE. (Genaugenommen gehört vor ein Update noch ein SELECT FOR UPDATE, um die Daten exclusiv für den Schreibzugriff zu bekommen, Stichwort "konkurrierender Datenzugriff".)
Gruß
Heiko