Thomas Schmieder: MySQL Update eines Timestamp-feldes

Hallo,

ich bin gerade am Verzweifeln,

in einer MySQL-Tabelle soll nur ein Timestamp-Feld auf den aktuellen Wert gesetzt werden, kein anderer Wert verändert sich.

Nun weigert sich MySQL strikt, das Feld zu aktualisieren. Nur, wenn sich im datensatz tatsächlich etwas ändert, wird auch das Timesatamp-Feld geändert. Ich habe schon versucht, einem Wert seinen eigenen wieder zuzuweisen, aber auch das erkennt MySQL nicht als Änderung an.

Was mache ich falsch bzw. kann ich anders machen, damit es klappt?

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
  1. Hi Tom

    ich bin gerade am Verzweifeln,

    in einer MySQL-Tabelle soll nur ein Timestamp-Feld auf den aktuellen Wert gesetzt werden, kein anderer Wert verändert sich.

    Geht das denn? Mir war, man müsste in dem Falle Date(time) verwenden.
    Ich denke, ein Timestamp wird immer beim erstellen des Datensatzes belegt.

    Nun weigert sich MySQL strikt, das Feld zu aktualisieren. Nur, wenn sich im datensatz tatsächlich etwas ändert, wird auch das Timesatamp-Feld geändert. Ich habe schon versucht, einem Wert seinen eigenen wieder zuzuweisen, aber auch das erkennt MySQL nicht als Änderung an.

    Was mache ich falsch bzw. kann ich anders machen, damit es klappt?

    Datetime nehmen, ich versuche das morgen auch mal, sonst muss ich die Tabellen ändern, wenn das nicht geht.

    Gute Nacht,
    Fabian

    1. Hi Fabi,

      in einer MySQL-Tabelle soll nur ein Timestamp-Feld auf den aktuellen Wert gesetzt werden, kein anderer Wert verändert sich.
      Geht das denn? Mir war, man müsste in dem Falle Date(time) verwenden.
      Ich denke, ein Timestamp wird immer beim erstellen des Datensatzes belegt.

      Nein, Timestamp verändert sich immer automatisch bei Veränderung im Datensatz. Offiziell muss man für Timestamp dann den neuen Wert NULL angeben. Aber das geht auch ohne. Leider geht es scheinbar nicht, wenn sich im Datensatz nichts verändert. Werde ich wohl ein Dummy-Feld in die LOGDATA bauen müssen, nur damit wir den "letzten Click" registrieren können.

      Ich hasse diese Basteleien und hoffe daher, dass ich einfach nur was übersehen habe (so wie die Klammern bei der set-Liste von Update, die da nicht erlaubt sind...)

      Gute Nacht,
      Fabian

      ebenfalls

      Tom

      --
      Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
  2. Hallo!

    Nun weigert sich MySQL strikt, das Feld zu aktualisieren. Nur, wenn sich im datensatz tatsächlich etwas ändert, wird auch das Timesatamp-Feld geändert. Ich habe schon versucht, einem Wert seinen eigenen wieder zuzuweisen, aber auch das erkennt MySQL nicht als Änderung an.

    Ich habe es mal schnell probiert. MySQL läßt mich auch nur die TIMESTAMP-Spalte updaten. In der Tabelle befinden sich noch zwei andere Spalten.

    UPDATE tabelle SET zeitstempel=NOW() WHERE id=1;

    Version: 3.23.49

    MfG, André Laugks
    L-Andre @ gmx.de

    1. Moin!

      Ich habe es mal schnell probiert. MySQL läßt mich auch nur die TIMESTAMP-Spalte updaten. In der Tabelle befinden sich noch zwei andere Spalten.

      UPDATE tabelle SET zeitstempel=NOW() WHERE id=1;

      Kann ich bestätigen, dass das funktioniert. Ein Timestamp-Feld hat nur zusätzlich die Eigenschaft, dass es sich automatisch mit aktualisiert. Hat man z.B. mehrere Felder vom Typ Timestamp, wird nur das erste Feld aktualisiert - die anderen nicht. Wie sollte man denen sonst je ein Datum zuweisen können?

      - Sven Rautenberg

      --
      Diese Signatur gilt nur am Freitag.
      1. Hallo,

        UPDATE tabelle SET zeitstempel=NOW() WHERE id=1;

        UPDATE LOGDATA SET LAST_CLICK=NULL WHERE ID=$userid;

        So sollte es laut Doku gehen und so geht es jetzt auch.

        Ich danke Euch. Der Fehler lag mal wieder ganz woanders. Ich habs die ganze Zeit nur über die PHP-Schnittstelle probiert und die war abgestürzt. Hab ich bisher noch nie gehabt. Lag vermutlich daran, dass ich Konstantendefinitionen doppelt included hatte. Muss ich noch untersuchen, ob das Probleme bereitet. Ist ja ne älteer Version von PHP (4.0.4).

        Jedenfalls hat es mich die halbe Nacht gekostet und viel Mut *gg*.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.