Straight from the docs for the latest version, regarding the initialization and updating of timestamp columns (emphasis their's, snarky parentheticals mine):
It goes on like that, with a number of curious statements which make me wonder if the developers sat in a back room drinking cheap whiskey and making up "features" to foist on people.
The second bullet point is scary. Why the hell would I want to have "DEFAULT NULL" treated as "DEFAULT CURRENT_TIMESTAMP"? I want my database to do what I tell my database to do, damn it. What's worse, they refer to the first timestamp column. Ignoring the fact that the MySQL is drifting even further from the relational model (sets aren't ordered!), there's a very practical issue here. If I drop and recreate a table, my table's behavior can change dramatically if I reorder my columns. That should not be relevant.
And for other timestamp columns, DEFAULT NULL is treated as DEFAULT 0? Why? This doesn't make a damned bit of sense to me. It also worries me given Adrian's post on a similar MySQL issue.
Reading through the comments for those docs is also "real fun".
MySQL: Transactions, check. Triggers, check. Foreign keys, check. Still a toy? Check.