2012-09-10 9 views
6

最近、私はmysqlの新しい問題に直面しました。私はcol1 timestamp default null column having default null valueで新しいテーブルを作成しようとしていましたが、作成時にそのカラムに無効なデフォルト値がエラーとして表示されました。しかし、私がcol1 timestamp null default nullを試してみると、そのテーブルが作成されました。mysqlのnullのデフォルトのnullとデフォルトのnullの違いは?

上記の2つの構文の違いは何ですか?私はまた、列のいくつかの挿入NULL値でこの問題に直面しました。

この問題は、バージョン特有の問題であるか、mysqlで何か他のものを説明することができます。

+0

'col1 timestamp null 'だけの場合、' default null'は省略できます(少なくともドキュメントによると)。ヌル値を持たないタイムスタンプ列には、あらかじめ定義された特別なプロパティがありますが、明示的にその列をヌル可能にすると、それらは表示されません。 – hvd

答えて

9

最初の「null」は、その列がNULL可能である、つまりnullを受け入れることを示します。 2番目の "null"(デフォルトの後)がデフォルト値です。

デフォルトを持つだけで、カラムでnullを拒否させる場合、そのデフォルトは使用できません。

(私が感じたのは、NULLでもNOT NULLも指定しないと、その列にはnullが設定されているため、混乱することがあります)。

関連する問題