浙江雁荡山 发表于 2018-10-11 07:18:53

[mysql] timestamp自动更新和初始化

#语句不合法,出现了两个未显示设置default或null的timestamp  
CREATE TABLE `tt1` (
  
`id` int(11) NOT NULL AUTO_INCREMENT,
  
`name` varchar(20),
  
`t1` timestamp ,
  
`t2` timestamp ,
  
PRIMARY KEY (`id`)
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  

  
#语句合法,t1字段 not null default current_timestamp on update current_timestamp,t2可空
  
CREATE TABLE `tt2` (
  
`id` int(11) NOT NULL AUTO_INCREMENT,
  
`name` varchar(20),
  
`t1` timestamp ,
  
`t2` timestamp null,
  
PRIMARY KEY (`id`)
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  

  
#语句不合法 t2字段没有设置default或null,也非表的第一个timestamp字段
  
CREATE TABLE `tt3` (
  
`id` int(11) NOT NULL AUTO_INCREMENT,
  
`name` varchar(20),
  
`t1` timestamp null,
  
`t2` timestamp ,
  
PRIMARY KEY (`id`)
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  

  
#语句不合法,这个看起来貌似合法,套用我们的规则,可以发现t2字段没有显示指定null/default,尽管指定了not null也不行
  
CREATE TABLE `tt4` (
  
`id` int(11) NOT NULL AUTO_INCREMENT,
  
`name` varchar(20),
  
`t1` timestamp null,
  
`t2` timestamp not null,
  
PRIMARY KEY (`id`)
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  

  
#语句不合法 t1,t2均合法,问题出在t3上,timestamp 默认not null,在没有显式指定null的时候,default null是不合法的
  
CREATE TABLE `tt5` (
  
`id` int(11) NOT NULL AUTO_INCREMENT,
  
`name` varchar(20),
  
`t1` timestamp not null,
  
`t2` timestamp null,
  
`t3` timestamp DEFAULT null,
  
PRIMARY KEY (`id`)
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8


页: [1]
查看完整版本: [mysql] timestamp自动更新和初始化