MySQL多個timestamp欄位自動新增預設值的問題

壹頁書發表於2017-04-13
MySQL版本5.6.14

建表語句

  1. drop table live_shrimp_info;
  2. CREATE TABLE `live_shrimp_info` (
  3.   `LiveID` bigint(20) NOT NULL COMMENT '直播ID',
  4.   `SummonStartTime` timestamp(3) NOT NULL COMMENT '召喚期開始時間',
  5.   `SummonEndTime` timestamp(3) NOT NULL COMMENT '召喚期結束時間',
  6.   `CaptureStartTime` timestamp(3) NOT NULL COMMENT '捕獲期開始時間',
  7.   `CaptureEndTime` timestamp(3) NOT NULL COMMENT '捕獲期結束時間',
  8.   `CreateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間',
  9.   `UpdateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  10.   PRIMARY KEY (`LiveID`)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;


建表之後,使用 show create table live_shrimp_info; 查詢


  1. CREATE TABLE `live_shrimp_info` (
  2.   `LiveID` bigint(20) NOT NULL COMMENT '直播ID',
  3.   `SummonStartTime` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '召喚期開始時間',
  4.   `SummonEndTime` timestamp(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000' COMMENT '召喚期結束時間',
  5.   `CaptureStartTime` timestamp(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000' COMMENT '捕獲期開始時間',
  6.   `CaptureEndTime` timestamp(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000' COMMENT '捕獲期結束時間',
  7.   `CreateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間',
  8.   `UpdateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  9.   PRIMARY KEY (`LiveID`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

納尼?怎麼多了這麼多預設值?
這就是MySQL搞笑所在,它認為你缺個預設值..就幫你加上了

第一個timestamp且not null的欄位,MySQL會自動加上
DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP()
其他timestamp且not null的欄位,MySQL會自動加上
DEFAULT '0000-00-00 00:00:00'

就是這麼貼心.(這功能有點2)




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2137219/,如需轉載,請註明出處,否則將追究法律責任。

相關文章