ホームページ >データベース >mysql チュートリアル >CURRENT_DATE/CURDATE() が MySQL DATE カラムのデフォルト値として機能しないのはなぜですか?

CURRENT_DATE/CURDATE() が MySQL DATE カラムのデフォルト値として機能しないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-20 02:53:09431ブラウズ

Why Doesn't CURRENT_DATE/CURDATE() Work as a Default Value for MySQL DATE Columns?

CURRENT_DATE/CURDATE() のデフォルトの日付値の問題

MySQL の世界では、一見単純な疑問に遭遇するかもしれません。 t CURRENT_DATE または CURDATE() は DATE のデフォルト値として機能します列?

謎: なぜ機能しないのか?

ご想像のとおり、このコードは問題なく動作するはずです:

CREATE TABLE INVOICE(
   INVOICEDATE DATE NOT NULL DEFAULT CURRENT_DATE
)

しかし、驚いたことに、そうではありません。この難問の背後にある理由は何ですか?

答え: MySQL の制限

答えは MySQL 内の制限にあります。直感的ではありますが、DATE カラムのデフォルト値を CURRENT_DATE または CURDATE() に設定することはサポートされていません。

MySQL ドキュメントによると、デフォルト値は関数や式ではなく定数である必要があります。これにより、これらの関数を使用してデフォルトの日付を動的に設定する可能性がなくなります。

例外: CURRENT_TIMESTAMP

このルールの例外は CURRENT_TIMESTAMP です。この関数は、TIMESTAMP 列のデフォルト値として設定できます。ただし、これは特定の日付ではなく、現時点を表すことに注意することが重要です。

UPDATE: MySQL 8.0.13 では、大幅な変更が行われました。 CURRENT_DATE および CURDATE() が DATE 列のデフォルト値としてサポートされるようになりました。このアップデートは、この記事で説明した制限に対処します。

以上がCURRENT_DATE/CURDATE() が MySQL DATE カラムのデフォルト値として機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。