MySQLtimestamp的一個坑

junyongyao發表於2016-03-04

前段時間用資料庫,發現mysql裡面的timestamp資料總是自動更新,但是自己設定的時候並沒有設成 on update有啥操作。
網上看到如下一段,謹記。

在CREATE TABLE語句中,第1個TIMESTAMP列可以用下面的任何一種方式宣告:
1: 如果定義時DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句都有,列值為預設使用當前的時間戳,並且自動更新。
2: 如果不使用DEFAULT或ON UPDATE子句,那麼它等同於DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。
3: 如果只有DEFAULT CURRENT_TIMESTAMP子句,而沒有ON UPDATE子句,列值預設為當前時間戳但不自動更新。
4: 如果沒用DEFAULT子句,但有ON UPDATE CURRENT_TIMESTAMP子句,列預設為0並自動更新。
5: 如果有一個常量值DEFAULT,該列會有一個預設值,而且不會自動初始化為當前時間戳。如果該列還有一個ON UPDATE CURRENT_TIMESTAMP子句,這個時間戳會自動更新,否則該列有一個預設的常量但不會自動更新。

經他人提醒,Mysql5.6.6版本里面增加了一個引數 explicit_defaults_for_timestamp,其預設值為False,就是它搞得鬼。它會讓表定義非所見即所得,存在極大隱患,所以,這個引數需要設定成為 True


相關文章