+ Antworten
Ergebnis 1 bis 3 von 3

Thema: [MySQL] INSERT oder UPDATE ?

  1. #1
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User 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 phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts 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 manuelito hilft, wo's geht manuelito hilft, wo's geht manuelito hilft, wo's geht 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?

+ Antworten

Aktive Benutzer

Aktive Benutzer

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

     

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