Update - Felder werden verändert, die nicht getroffen werden sollten



  • Hi,

    ich benutze den MySql-Server 5.0.41. Ich hab eine Tabelle erstellt, die so aussieht.

    Name -> varchar(20) (Primär Schlüssel)
    StartZeit -> timestamp
    EndZeit -> timestamp
    KInfo -> varchar(100)

    Geschehen ist das mit der Anweisung:

    CREATE TABLE MedMessData.Data (Name VARCHAR(20), PRIMARY KEY(Name), StartZeit TIMESTAMP, EndZeit TIMESTAMP, KInfo VARCHAR(100))
    

    Wenn eine neue Zeile eingefügt wird, dann geschieht das so:

    INSERT INTO MedMessData.Data SET Name = 'blah', StartZeit = CURRENT_TIMESTAMP, EndZeit = 0, KInfo = NULL
    

    Wenn ich jetzt später mit:

    UPDATE MedMessData.Data SET EndZeit = CURRENT_TIMESTAMP WHERE EndZeit = 0
    

    die Endzeit setzen will, wird auch meine Startzeit überschrieben. Warum? 😕

    Ich kann keinen Denkfehler entdecken, vielleicht könnt ihr es ja.

    Thx, Maffe



  • Hi,

    lies dir mal den Beitrag auf
    http://dev.mysql.com/doc/refman/5.1/de/timestamp-4-1.html
    durch.

    Durch deine Default-Einstellung wird dein Timestamp auch als Aktualisierung angesehen, d.h. jedliche Änderung eines beliebigen Feldes ändert bei dir auch die Startzeit.

    Du mußt demnach deine Tabellendefinition ändern.



  • Nimm DateTime und schreibe den Wert mit NOW()

    In MySQL darf es nur einen Timestamp geben. Auch wenn man 2 Spalten definiert wird immer nur der erste genommen.



  • Alles klar. So geht's. Na ich hab die anderen Anfragen mal vor Jahren schon benutzt und da funktionierte es. Deswegen war ich leicht verwirrt.

    Danke, an euch.


Anmelden zum Antworten