9

最近我在 MySQL 中遇到了一个新问题。我正要创建一个新表

col1 TIMESTAMP DEFAULT NULL

(即具有默认NULL值的列),但在创建时给了我一个错误:

列的默认值无效

但是当我尝试时col1 TIMESTAMP NULL DEFAULT NULL,该表已创建。

我想知道以上两种语法有什么区别。我之前在列中的一些插入 NULL 值中也遇到了这个问题。

任何人都可以解释这个问题的原因,比如它是特定于版本的问题还是 MySQL 的其他问题?

4

1 回答 1

12

第一个NULL表示该列可以为,即接受NULL。第二个NULL(在 之后DEFAULT)是默认值。

如果您只有默认值,但使列拒绝空值,则无法使用该默认值。

(不过,我的印象是,如果您既不指定NULL也不指定NOT NULL该列可以为空,那么您所看到的有点令人困惑)。

于 2012-09-10T07:05:19.953 回答