最近我在MySQL遇到了一个新问题。我正打算用
创建一个新表 col1 TIMESTAMP DEFAULT NULL
(即具有默认NULL
值的列),但在创建时给出了错误:
列
的默认值无效
但是当我尝试col1 TIMESTAMP NULL DEFAULT NULL
时,该表已经创建了。
我想知道上述两种语法之间的区别。在列中的一些插入NULL值中,我也更早地遇到了这个问题。
任何人都可以解释这个问题的原因,比如特定于版本的问题还是MySQL的其他问题?
答案 0 :(得分:11)
第一个NULL
表示该列可以为空,即接受NULL
。第二个NULL
(DEFAULT
之后)是默认值。
如果您只有默认值,但使列拒绝为空,则无法使用该默认值。
(但我的印象是,如果您既未指定NULL
也不指定NOT NULL
该列可以为空,那么您看到的内容有点令人困惑。)