MySQL aktueller Zeitstempel als DEFAULT einer Spalte
Marko
- datenbank
0 Cheatah0 Marko
0 Klaus Mock0 Uwe Nohl0 Marko
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
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
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)
)";
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
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
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