Ergebnis 1 bis 3 von 3

Thema: [MySQL] INSERT oder UPDATE ?

  1. #1
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869

    [MySQL] INSERT oder UPDATE ?

    Jeder kennt es - es soll ein Datensatz in eine Tabelle eingetragen werden.
    Die Tabelle hat ein Schlüsselfeld, das eindeutig ist.

    Führt man einen Insert aus und der Key ist schon vorhanden, löst das ein Fehler aus, also muss man folgendes machen:
    1. Abfragen ob der Key schon vorhanden ist
    2. Ist vorhanden => UPDATE, sonst INSERT

    Man muss also 2 Abfragen machen.
    Findige User sagen: okay, probieren wir erst UPDATE

    PHP-Code:
    mysql_query("UPDATE tabelle SET ...");
    if(!
    mysql_affected_rows() {
       
    mysql_query("INSERT INTO tabelle SET ...");

    Die Methode hat einen Haken. MySQL überprüft bei einem UPDATE, ob es überhaupt neue Werte gibt. ist das nicht der Fall, macht es nichts, die Rückgabe der betroffenen Datensätze wäre dann 0.
    Unsere Abfrage würde greifen, einen INSERT durchführen und einen Fehler auslösen.

    MySQL hat einen pfiffigen Befehl, der die ganze Problematik umgeht:

    Code:
    INSERT INTO tabelle SET ...  ON DUPLICATE KEY UPDATE timestamp=UNIX_TIMESTAMP();
    Ich finde das eine sehr praktische Sache und schätze, das kaum einer diesen Syntax kennt.

    weiter Infos: http://dev.mysql.com/doc/refman/5.1/...duplicate.html

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  2. #2
    TP-Specialist Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Hab' das gerade mal getestet und muß zugeben, daß das DUPLICATE KEY UPDATE absolut brilliant ist!
    Klasse Tipp

  3. #3
    TP-Veteran Avatar von manuelito
    Registriert seit
    Sep 2002
    Beiträge
    1.229
    spitzenmässig, steffen. Baue eben ein DB basiertes Sessionhandling und habe mich an diesen Tipp erinnert, kommt wie gerufen!
    Wer sabotiert eigentlich ständig meine Signatur?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51