Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: MySQL zwei Timestamp Felder?

  Alt 23. Jan 2007, 17:51
Hallo Martin,

mein aktueller Erkenntnisstand ist: Es geht nicht ohne Code.

Aus dem MySQL 5.0 Reference Manual Chapter 11.3.1
It is not possible to have the current timestamp be the default value for one column and the auto-update value for another column.

...

Any single TIMESTAMP column in a table can be used as the one that is initialized to the current timestamp or updated automatically.

Tut mir leid, aber bei genauem Lesen komme ich zu dem Schluß, dass du beliebig viele TIMESTAMP Spalten anlegen kannst, aber meine Idee mit dem Weglassen des DEFAULT Wertes bei der Spalte Updated funktioniert nicht, da MySQL dann automatisch DEFAULT CURRENT_TIMESTAMP annimmt, was zu der von dir beobachteten Fehlermeldung führt. Mag sein, dass die Initialisierung von Spalte Created über eine UDF funktionieren würde, aber ich schlage dir eher diesen Weg vor:

SQL-Code:
create table angel (
  id integer auto_increment key,
  updated timestamp,
  created timestamp not null
)
Beim INSERT musst du CURRENT_TIMESTAMP für die Spalte Created übergeben, beim UPDATE wird die Spalte automatisch aktualisiert. Alternativ kannst du auch einen BEFORE INSERT Trigger definieren - wenn du mindestens Version 5.0.2 einsetzt.

Dein ON UPDATE hatte ich übrigens völlig falsch eingeordnet. Wer Lesen kann ist klar im Vorteil...

Freundliche Grüße
  Mit Zitat antworten Zitat