为什么TIMESTAMP列需要" NULL"接受空值?

时间:2016-01-29 01:16:58

标签: mysql

我已经用Google搜索了一下,但却找不到任何内容。

为什么MySQL列类型" TIMESTAMP"需要" NULL"当其他列类型不接受时,接受空值的参数?

此外,这是唯一需要" NULL"参数接受空值?

谢谢。

1 个答案:

答案 0 :(得分:3)

这与5.6.6及更高版本explicit_defaults_for_timestamp中添加的系统变量有关。默认行为是:

  
      
  • 未使用NULL属性显式声明的TIMESTAMP列被赋予NOT NULL属性。 (其他数据类型的列,如果未显式声明为NOT NULL,则允许NULL值。)将此列设置为NULL会将其设置为当前时间戳。

  •   
  • 表中的第一个TIMESTAMP列,如果未使用NULL属性或显式DEFAULT或ON UPDATE子句声明,则会自动分配DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性。

  •   
  • 第一个后面的TIMESTAMP列,如果没有使用NULL属性或显式DEFAULT子句声明,则会自动分配DEFAULT'0000- 00:00:00'(“零”时间戳)。对于没有为此类列指定显式值的插入行,该列将分配“0000-00-00 00:00:00”并且不会发出警告。

  •   

设置此变量会使TIMESTAMP列的行为与其他列相同。计划是在将来的某个版本中,非标准行为将被完全删除,然后该变量将被弃用。