Marko: MySQL aktueller Zeitstempel als DEFAULT einer Spalte

Hallo Forum,

ich versuche gerade mittels PHP auf einer MySQL Datenbank in einer Spalte als DEFAULT Wert den aktuellen Zeitstempel, zu dem der Datensatz auf die DAtenbank geschrieben wird einzugeben. Das ganze hab ich mit dem folgenden SQL-Statement probiert:

CREATE TABLE users (
                   guid         BIGINT NOT NULL PRIMARY KEY,
                   timestamp    TIMESTAMP DEFAULT NOW(),
                   company      VARCHAR(50),
                   username     VARCHAR(50) UNIQUE
                   )

Es geht aber nicht. Also die Frage:

Kann ich schon beim anlegen der Tabelle mitteilen, das immer der aktuelle Zeitstempel als default genommen wird, oder muss ich bei jdem Insert den Zeitstempel mitgeben.

Gruss

Marko

  1. Hi,

    ich versuche gerade mittels PHP auf einer MySQL Datenbank in einer Spalte als DEFAULT Wert den aktuellen Zeitstempel, zu dem der Datensatz auf die DAtenbank geschrieben wird einzugeben.

    hm, Du willst also SYSDATE als DEFAULT eintragen? Mal überlegen, wie könnte das gehen...? ;-)

    Cheatah

    1. Hi Cheatah,

      vielleicht bin ich zu blöd, aber beim anlegen der Tabelle, bekomme ich immer einen Fehler, wenn ich sowas als Felddefinition probiere:

      time    TIMESTAMP DEFAULT CURRENT_TIMESTAMP

      Der Fehler daraufhin:

      You have an error in your SQL syntax near 'CURRENT_TIMESTAMP, company VARCHAR(50), ' at line 3
      Ende

      Statt CURRENT_TIMESTAMP habe ich auch schon SYSDATE(), NOW(), CURRENT_TIME, UNIX_TIMESTAMP und verschiedenes anderes probiert.
      Liegt es einfach daran, dass ein Default Wert ein fester Wert sein muss, und keine Funktion sein kann ? Oder hab ich nur wiedermal irgendeinen ganz dämlichen kleinen Syntaxfehler drin.

      vielen Dank für jede Hilfe

      Gruss

      Marko

      p.s. hier nochmal das komplette sql, obwohl es funktioniert, halt bis auf den DEFAULT:

      $sql =  "CREATE TABLE users (
                         guid         BIGINT NOT NULL PRIMARY KEY,
                         time         TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                         company      VARCHAR(50),
                         username     VARCHAR(50) UNIQUE,
                         password     VARCHAR(50),
                         speakto      VARCHAR(10),
                         name         VARCHAR(50),
                         familyname   VARCHAR(50),
                         email        VARCHAR(50),
                         citycode     VARCHAR(50),
                         telefon      VARCHAR(50),
                         fax          VARCHAR(50),
                         street       VARCHAR(50),
                         housenumber  VARCHAR(50),
                         postcode     VARCHAR(5),
                         city         VARCHAR(50)
                         )";

  2. Hallo

    ich versuche gerade mittels PHP auf einer MySQL Datenbank in einer Spalte als DEFAULT Wert den aktuellen Zeitstempel, zu dem der Datensatz auf die DAtenbank geschrieben wird einzugeben.
    [...]
    Es geht aber nicht. Also die Frage:

    TIMESTAMP wird jedesmal aktualisiert, wenn der Datensatz modifiziert wird.

    Allerdings habe ich einmal gehört, daß, wenn zwei TIMESTAMP-Felder in einer Tabelle eingetragen sind, dann wird immer nur das zweite bei Modifikationen aktualisiert, das erste enthält dann die Zeit, zu der der Datensatz angelegt wurde. Wie gesagt, habe ich einmal gehört, ist nicht überprüft.

    Alternativ kannst Du ja ein DATETIME-Feld verwenden, wo wieder der Hinweis von Cheatah Dich sicherlich weiter bringt.

    Grüße
    Klaus

  3. Hallo,

    entweder bin ich der dümmste hier und/oder kapiere das Problem nicht. Vorige Woche legte ich eine MySQL-Tabellmit timestamp-Feld

    CREATE TABLE tblname (...., feld TIMESTAMP, ...) an und füllte die über ODBC-Direct aus Access-Tabelle mit Daten. Nachdem alles gelaufen war, standen in der MySQL-Tabelle vom 1. bis zum 623.147. Datensatz exaxt die Systemzeiten der Einfügevorgänge.

    ???
    Gruss
    Uwe Nohl

    1. Hallo Uwe,

      entweder bin ich der dümmste hier und/oder kapiere das Problem nicht.

      Nein bist Du nicht, könnte ich aber sein. Mittlerweile hab ich festgestellt, wenn ich den ganzen Müll mit Default weglasse trägt sich der Timestamp von allein ein, ganz einfach.

      Gruss

      Marko