MySQL でテーブル作成時に、 date 型カラムのデフォルト値を sysdate に設定しようとすると

ERROR 1067 (42000): Invalid default value for ‘xxx’


調べてみると、MySQL ではデフォルト値は定数のみ設定できる仕様になっているようだ。

MySQL 5.1 Reference Manual :: 10 Data Types :: 10.1 Data Type Overview :: 10.1.4 Data Type Default Values

10.1.4. Data Type Default Values
The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE.

マニュアルを読むと、処理日時を設定したい場合は timestamp 型を使えと書いてある。
(Oracle だと “カラム名 date default sysdate” とすればよい)

定数しか使えない仕様には納得がいかない人も多いるようで、 Bug #27645 Datetime field does not accept default NOW() というオープンチケット/フィーチャーリクエストに実装を求める人たちが、たくさんコメントをつけている。

Tagged with: , , , ,
Posted in database

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: