Update MySQL timestamp on update

MySQL timestamp FAQ: How can I update a MySQL TIMESTAMP field when I issue an update for a MySQL database table?

MySQL has some crazy rules about how timestamp fields can be created, but one nice "timestamp update" syntax you can use looks like this, assuming that you're declaring a timestamp field named last_updated:

last_updated timestamp default current_timestamp on update current_timestamp,

With this MySQL timestamp update syntax in your MySQL "create table" syntax, this timestamp field will be updated every time you issue a SQL UPDATE statement on this table.

Update MySQL TIMESTAMP - Example

Here's a short MySQL example that demonstrates how this automatic timestamp update process works:

mysql> create table test (foo int, last_updated timestamp default current_timestamp on update current_timestamp);
Query OK, 0 rows affected (0.11 sec)

mysql> insert into test (foo) values (1);
Query OK, 1 row affected (0.01 sec)

mysql> select * from test;
+------+---------------------+
| foo  | last_updated        |
+------+---------------------+
|    1 | 2010-12-15 15:15:28 |
+------+---------------------+
1 row in set (0.00 sec)

mysql> update test set foo=2;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from test;
+------+---------------------+
| foo  | last_updated        |
+------+---------------------+
|    2 | 2010-12-15 15:15:46 |
+------+---------------------+
1 row in set (0.00 sec)

Note that the "default current_timestamp" syntax isn't necessary for this example; that part of the MySQL TIMESTAMP syntax sets the default MySQL TIMESTAMP to "now" on SQL INSERT statements. The "ON UPDATE" part of the MySQL syntax is what gives us this SQL UPDATE behavior.

For more information on the MySQL TIMESTAMP field data type, see the MySQL TIMESTAMP docs: http://dev.mysql.com/doc/refman/5.0/en/timestamp.html.