INSERT aber nur wenn Datensatz noch nicht vorhanden ist.

mafin

Mitglied
Hallo,

ich will einen Datensatz in eine Tabelle schreibe, aber nur wenn der Datensatz nicht schon enthalten ist.
Wie sieht da mein SQL-Befehl aus?
 
Hi,
das hängt von dem Aufbau der Tabelle ab. Du brauchst ein Unique Erkennungsmerkmal, das aus einer oder mehreren Eigenschaften des Datensatzes besteht (idealerweise nimmt man diese Spalte(n) auch als Primärschlüssel). Z.b. kannst du bei einer Newsletteranmeldung überprüfen ob die Emailadresse schon einmal eingetragen wurde. Gibt es keine einzelne Eigenschaft (oder Summe aus Eigenschaften) die einen Datensatz eindeutig Identifizierbar machen ist ein 100 % iges verhindern doppelter Einträge nicht möglich, da es ja auch kein Merkmal gibt das sie als solche erkennbar macht.

Die Ausführung ist es ganz einfach - du bastelst eine Abfrage mit den gefundenen eindeutigen Bedingungen - Wenn die Anzahl der als Antwort gelieferten Datensätze > 0 ist, dann gibts den Eintrag schon, sonst schreibst du einen ganz normalen INSERT....
 
Kann ich das nicht in einer Zeile z.B. mit NOT IN machen?
Wenn ich das Feld unique setze, dann bekomme ich eine fehlermeldung sobald ich mehrere datensätze, die gleich sind einfügen will.
das ist das problem.
 
Versuch es mal mit INSERT IGNORE. Das IGNORE übergeht die Fehlermeldung und fügt den Datensatz nicht hinzu.
 
Mit "NOT IN" ist mir nichts bekannt. Wenn du alles in einem Statement lösen willst sollte es meines Wissens nach auch eine möglichkeit mit "INSERT.... ON DUPLICATE ...." geben. Habs aber selber noch nie verwendet.
 
INSERT IGNORE INTO
oder
INSER INTO IGNORE

der ignoriert dann aber nur die fehlermeldung und schreibt aber auch nicht den datensatz rein wenn er schon vorhanden ist?
 

Neue Beiträge

Zurück