[MySQL] mysql 5.5和 5.6 timestamp default 默認值CURRENT_TIMESTAMP問題


TIMESTAMP在MySQL5.5中的行為:

1.第一個未設置默認值的TIMESTAMP NOT NULL字段隱式默認值:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

2.后面未設置默認值的TIMESTAMP NOT NULL字段隱式默認值:0000-00-00 00:00:00

3.不支持多個CURRENT_TIMESTAMP 默認值

5.5的建表語句類似這樣:

CREATE TABLE `audit_log` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `ent_id` int(10) unsigned NOT NULL DEFAULT '0',
  `rule_id` int(10) unsigned NOT NULL DEFAULT '0',
  `rules_detail` varchar(2048) NOT NULL DEFAULT '' COMMENT '規則詳情',
  `sender_email` varchar(512) NOT NULL DEFAULT '' COMMENT '發件人被審核郵箱',
  `receiver_email` varchar(512) NOT NULL DEFAULT '' COMMENT '收件人郵箱',
  `subject` varchar(512) NOT NULL DEFAULT '' COMMENT '主題',
  `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `start_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `end_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '當前狀態(1 通過,2 拒絕,3 超時拒絕,4 超時通過)',
  `reviewer_leader` varchar(512) NOT NULL DEFAULT '' COMMENT '審核人',
  PRIMARY KEY (`id`),
  KEY `idx_ent_id` (`ent_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='審核日志表'

 

 

TIMESTAMP在MySQL5.6中的行為:

支持多個CURRENT_TIMESTAMP 默認值,但是不支持設置默認值為0000-00-00 00:00:00

5.6的可以這樣:

  `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `end_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM