ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
888
888
EMPFEHLEN
-
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?
-
16.12.08 13:37 #2
- Registriert seit
- Mar 2007
- Ort
- Klagenfurt (Kärnten) [Österreich]
- Beiträge
- 210
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.
-
16.12.08 14:10 #5
- Registriert seit
- Mar 2007
- Ort
- Klagenfurt (Kärnten) [Österreich]
- Beiträge
- 210
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.
-
ON DUPLICATE UPDATE führt dann aber ein UPDATE auf den Datensatz aus.
-
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?
Ähnliche Themen
-
[MySQL] Datensatz eintragen, wenn nicht vorhanden
Von Steusi im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 03.11.10, 15:18 -
Datensatz löschen, wenn in einer anderen Tabelle nicht vorhanden
Von port29 im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 15.08.10, 03:16 -
MSSQL: update - und wenn nicht vorhanden, dann insert
Von JavaUncle im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 19.01.08, 12:27 -
Hibernate: Objekt nur persistieren, wenn Datensatz noch nicht vorhanden?
Von DarthShader im Forum JavaAntworten: 3Letzter Beitrag: 22.10.07, 08:31 -
neuen ordner anlegen, wenn noch nicht vorhanden
Von vyanna im Forum PHPAntworten: 4Letzter Beitrag: 19.07.04, 13:02





Zitieren
Login





