Hai notato che aggiornando un record MySql un campo timestamp si aggiorna automaticamente?
Nessun problema, nella documentazione ufficiale (Manuali MySql, PHP, Apache…) abbiamo scovato le soluzioni per tutti i gusti, infatti alla pagina http://dev.mysql.com/doc/refman/5.0/en/timestamp.html si legge:
-
Auto-initialization and auto-update:
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
-
Auto-initialization only:
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-
Auto-update only:
ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
-
Neither:
ts TIMESTAMP DEFAULT 0
In termini pratici, con un esempio, se si vuole modificare una colonna già esistente (che chiameremo "compleanno", della tabella "esempio_iscritti") di modo che appena creata assuma il valore della data attuale ma che in seguito non cambi a ogni UPDATE eseguite questa query:
ALTER TABLE esempio_iscritti CHANGE compleanno compleanno TIMESTAMP DEFAULT CURRENT_TIMESTAMP
Semplice vero? Se per la stessa colonna volete invece che non ci sia nè un valore di default alla creazione del record nè un aggiornamento di quel valore ad ogni UPDATE eseguite questa query:
ALTER TABLE esempio_iscritti CHANGE compleanno compleanno TIMESTAMP DEFAULT 0
Il meccanismo è semplice e un grosso problema è risolto.