end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転します

mysqlのtimestamp型に適用される on update CURRENT_TIMESTAMP を無効化したい

どうやら、mysqlでは、tableにtimestamp型がある場合、一方?のtimestamp型に
default=CURRENT_TIMESTAMP と on update CURRENT_TIMESTAMP が設定されるみたい。

mysql> desc message;
+----------------+-------------+------+-----+---------------------+-----------------------------+
| Field          | Type        | Null | Key | Default             | Extra                       |
+----------------+-------------+------+-----+---------------------+-----------------------------+
| msg_id         | int(11)     | NO   | PRI | NULL                | auto_increment              |
| id             | int(11)     | YES  |     | NULL                |                             |
| msg            | text        | YES  |     | NULL                |                             |
| from_group     | varchar(8)  | YES  |     | NULL                |                             |
| from_group_sub | varchar(8)  | YES  |     | NULL                |                             |
| to_group       | varchar(8)  | YES  |     | NULL                |                             |
| to_group_sub   | varchar(8)  | YES  |     | NULL                |                             |
| update_user    | varchar(32) | YES  |     | NULL                |                             |
| update_time    | timestamp   | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
| read_user      | varchar(32) | YES  |     | NULL                |                             |
| read_time      | timestamp   | NO   |     | 0000-00-00 00:00:00 |                             |
+----------------+-------------+------+-----+---------------------+-----------------------------+

なので、次のsql分で解消

alter table message modify update_time timestamp default '0000-00-00 00:00:00'
mysql> desc message;                                                                                                       
+----------------+-------------+------+-----+---------------------+----------------+
| Field          | Type        | Null | Key | Default             | Extra          |
+----------------+-------------+------+-----+---------------------+----------------+
| msg_id         | int(11)     | NO   | PRI | NULL                | auto_increment |
| id             | int(11)     | YES  |     | NULL                |                |
| msg            | text        | YES  |     | NULL                |                |
| from_group     | varchar(8)  | YES  |     | NULL                |                |
| from_group_sub | varchar(8)  | YES  |     | NULL                |                |
| to_group       | varchar(8)  | YES  |     | NULL                |                |
| to_group_sub   | varchar(8)  | YES  |     | NULL                |                |
| update_user    | varchar(32) | YES  |     | NULL                |                |
| update_time    | timestamp   | NO   |     | 0000-00-00 00:00:00 |                |
| read_user      | varchar(32) | YES  |     | NULL                |                |
| read_time      | timestamp   | NO   |     | 0000-00-00 00:00:00 |                |
+----------------+-------------+------+-----+---------------------+----------------+