天天看點

深入淺出timestamp

好了,這裡直奔主題吧。昨天有位同僚遇到的錯誤error 1293 (hy000):

通過以上錯誤,查查手冊就知道,timestamp類型不允許有兩個current_timestamp作為default值。

既然如此,那我們就去掉一個呗

so easy,這不就解決了嘛。

可是問題真是這樣嘛?有些同學比較嚴謹和認真,将兩個字段的順序對調一下,則

你看看,問題又來了,這樣徹底暈了,同樣的建表語句,隻是字段順序變掉了,就錯了?

莫非這是mysql 的 bug? 去mysql buglist中去查檢視,結果沒有類似bug。

目前能想到的就是仔細去看看官方文檔對于current_timestamp的描述

看的仔細的同學就會發現,current timestamp as the default value for initializing the column,意思就是mysql 會初始化第一個timestamp字段的default值為‘current timestamp’。一個表裡面多個timestamp column 隻能擁有一個‘current timestamp’值。

so,這下豁然開朗,既然如此,那麼就開始測試以上理論吧。

既然第一個timestamp字段的預設default為‘current timestamp’,那我顯示更改預設值總可以吧

第一個timestamp字段的預設default為‘current timestamp’,第二個字段總不會了吧

ok,到這裡,我想這個問題應該徹底明白了吧。

那我們又回過頭來思考一下,為什麼隻能擁有一個current_timestamp default值呢?說實話,我還真沒想明白。但是,我知道mysql 5.5 高版本和mysql5.6 以及更高版本以及去掉了這個限制

測試:

以上問題,均源于對mysql 官方文檔的不細緻學習造成。

mysql官方文檔目前雖然講解的原理不是很深,很細,但是确實值得我們仔細閱讀。

繼續閱讀