アプリ版:「スタンプのみでお礼する」機能のリリースについて

初心者ですが、よろしくお願いします。

Mysqlでテーブルを作成して、カラムにDATE型を指定するとDEFAULT値が設定できません、、、。
これはMysqlの仕様なのでしょうか?

ちなみに、TIMESTAMP型だと、'DEFAULT CURRENT_TIMESTAMP'でDEFAULT設定できます、、。


-- クエリ
CREATE TABLE test (
column_name DATE NOT NULL DEFAULT CURRENT_DATE
);

>> エラー
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_DATE)' at line 1

Mysql::ABも調べたのですが、よく分かりませんでした。
よろしくお願いします。


MySQLバージョン 5.0.41

A 回答 (1件)

MySQLのマニュアルに、記載があります。


CURRENT_DATE等を、DEFAULTに設定することはできません。
TIMESTAMP型に関しては、MySQLが自動的に日時を設定する特別なデータ型なので、指定があってもsyntaxエラーにしていないのでしょう。

「DEFAULT 値は定数でなければならず、関数や式を使用することはできない。
DEFAULT 値が指定されていない場合、そのカラムには、次の方法で、MySQL によって DEFAULT 値が自動的に割り当てられる。
値として NULL を取れるカラムの場合、デフォルト値は NULL になる。
NOT NULL として宣言されているカラムの場合、デフォルト値はそれぞれのカラム型によって決まる。
AUTO_INCREMENT 属性を持つと宣言されていない数値型カラムの場合、デフォルトは 0。AUTO_INCREMENT カラムの場合、デフォルト値は連続値の次の値になる。
TIMESTAMP 型以外の日付と時刻型の場合、デフォルトはその型に対応するゼロ値。テーブル内の最初の TIMESTAMP 型カラムのデフォルト値は、現在の日時になる。 See 項6.2.2. 「日付と時刻型」。
ENUM 型以外の文字列型の場合、デフォルト値は空の文字列。ENUM の場合、デフォルト値は最初の列挙値になる。
 デフォルト値は定数でなければならない。したがって、日付カラムのデフォルト値として、NOW() や CURRENT_DATE などの関数を設定することはできない。 」

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/create-ta …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す