tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
888
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mafin mafin ist offline Mitglied Silber
    Registriert seit
    Oct 2008
    Beiträge
    64
    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?
     

  2. #2
    hans jörg hans jörg ist offline Mitglied Gold
    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....
     

  3. #3
    mafin mafin ist offline Mitglied Silber
    Registriert seit
    Oct 2008
    Beiträge
    64
    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.
     

  4. #4
    mk666 mk666 ist offline Mitglied Bronze
    Registriert seit
    Aug 2007
    Beiträge
    48
    Versuch es mal mit INSERT IGNORE. Das IGNORE übergeht die Fehlermeldung und fügt den Datensatz nicht hinzu.
     

  5. #5
    hans jörg hans jörg ist offline Mitglied Gold
    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.
     

  6. #6
    mk666 mk666 ist offline Mitglied Bronze
    Registriert seit
    Aug 2007
    Beiträge
    48
    ON DUPLICATE UPDATE führt dann aber ein UPDATE auf den Datensatz aus.
     

  7. #7
    mafin mafin ist offline Mitglied Silber
    Registriert seit
    Oct 2008
    Beiträge
    64
    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

  1. [MySQL] Datensatz eintragen, wenn nicht vorhanden
    Von Steusi im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 03.11.10, 15:18
  2. Datensatz löschen, wenn in einer anderen Tabelle nicht vorhanden
    Von port29 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.08.10, 03:16
  3. MSSQL: update - und wenn nicht vorhanden, dann insert
    Von JavaUncle im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 19.01.08, 12:27
  4. Antworten: 3
    Letzter Beitrag: 22.10.07, 08:31
  5. Antworten: 4
    Letzter Beitrag: 19.07.04, 13:02