MySQL 5.6 中 TIMESTAMP 的變化分析
在MySQL 5.6.6之前,TIMESTAMP的默認(rèn)行為:
■TIMESTAMP列如果沒有明確聲明NULL屬性,默認(rèn)為NOT NULL。(而其他數(shù)據(jù)類型,如果沒有顯示聲明為NOT NULL,則允許NULL值。)設(shè)置TIMESTAMP的列值為NULL,會(huì)自動(dòng)存儲(chǔ)為當(dāng)前timestamp。
■表中的第一個(gè)TIMESTAMP列,如果沒有聲明NULL屬性、DEFAULT或者 ON UPDATE,會(huì)自動(dòng)分配 DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP 屬性。
■表中第二個(gè)TIMESTAMP列,如果沒有聲明為NULL或者DEFAULT子句,默認(rèn)自動(dòng)分配'0000-00-00 00:00:00′。插入行時(shí)沒有指明改列的值,該列默認(rèn)分配'0000-00-00 00:00:00′,且沒有警告。
2列TIMESTAMP未聲明為NULL的默認(rèn)行為
從MySQL5.6.6開始這種默認(rèn)設(shè)置的方法被廢棄了。在MySQL啟動(dòng)時(shí)會(huì)出現(xiàn)以下警告:
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (seedocumentation for more details).
關(guān)閉警告,在my.cnf中加入
[mysqld] explicit_defaults_for_timestamp=true
重啟MySQL后錯(cuò)誤消失,這時(shí)TIMESTAMP的行為如下:
■TIMESTAMP如果沒有顯示聲明NOT NULL,是允許NULL值的,可以直接設(shè)置改列為NULL,而沒有默認(rèn)填充行為。
■TIMESTAMP不會(huì)默認(rèn)分配DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP屬性。
TIMESTAMP 不設(shè)置是否為NULL
■聲明為NOT NULL且沒有默認(rèn)子句的TIMESTAMP列是沒有默認(rèn)值的。往數(shù)據(jù)表中插入列,又沒有給TIMESTAMP列賦值時(shí),如果是嚴(yán)格SQL模式,會(huì)拋出一個(gè)錯(cuò)誤,如果嚴(yán)格SQL模式?jīng)]有啟用,該列會(huì)賦值為'0000-00-00 00:00:00′,同時(shí)出現(xiàn)一個(gè)警告。(這和MySQL處理其他時(shí)間類型數(shù)據(jù)一樣,如DATETIME)
TIMESTAMP 默認(rèn)設(shè)置為NOT NULL
Note:
以上內(nèi)容和存儲(chǔ)引擎選擇無關(guān)。
相關(guān)文章
Mysql update多表聯(lián)合更新的方法小結(jié)
這篇文章主要介紹了Mysql update多表聯(lián)合更新的方法小結(jié),通過實(shí)例代碼給大家介紹了mysql多表關(guān)聯(lián)update的語句,感興趣的朋友跟隨小編一起看看吧2020-02-02快速實(shí)現(xiàn)MySQL的部署以及一機(jī)多實(shí)例部署
這篇文章主要為大家詳細(xì)介紹了快速實(shí)現(xiàn)MySQL的部署以及一機(jī)多實(shí)例部署的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-04-04MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn)
這篇文章主要介紹了MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02詳解MySQL與Spring的自動(dòng)提交(autocommit)
這篇文章主要介紹了MySQL與Spring的自動(dòng)提交(autocommit)的的相關(guān)資料,幫助大家更好的理解和使用MySQL與spring,感興趣的朋友可以了解下2021-01-01MSSQL根據(jù)ID進(jìn)行分頁實(shí)現(xiàn)方法
本文將詳細(xì)介紹MSSQL根據(jù)ID進(jìn)行分頁實(shí)現(xiàn)方法,需要的朋友可以參考下2012-11-11