Heim >Datenbank >MySQL-Tutorial >Warum funktioniert CURRENT_DATE/CURDATE() nicht als Standardwert für MySQL-DATE-Spalten?

Warum funktioniert CURRENT_DATE/CURDATE() nicht als Standardwert für MySQL-DATE-Spalten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-20 02:53:09466Durchsuche

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

Probleme mit dem Standarddatumswert mit CURRENT_DATE/CURDATE()

In der MySQL-Welt stoßen Sie möglicherweise auf eine scheinbar einfache Frage: Warum funktioniert das nicht? Funktionieren CURRENT_DATE oder CURDATE() als Standardwert für eine DATE-Spalte?

Die Rätsel: Warum funktioniert es nicht?

Wie zu erwarten, sollte dieser Code ohne Probleme funktionieren:

CREATE TABLE INVOICE(
   INVOICEDATE DATE NOT NULL DEFAULT CURRENT_DATE
)

Zu unserer großen Überraschung funktioniert er jedoch nicht . Was ist der Grund für dieses Rätsel?

Die Antwort: Eine MySQL-Einschränkung

Die Antwort liegt in einer Einschränkung innerhalb von MySQL. Obwohl es intuitiv ist, wird das Festlegen des Standardwerts einer DATE-Spalte auf CURRENT_DATE oder CURDATE() nicht unterstützt.

Laut der MySQL-Dokumentation müssen Standardwerte Konstanten und keine Funktionen oder Ausdrücke sein. Dadurch entfällt die Möglichkeit, diese Funktionen zum dynamischen Festlegen von Standarddaten zu verwenden.

Die Ausnahme: CURRENT_TIMESTAMP

Die Ausnahme von dieser Regel ist CURRENT_TIMESTAMP. Diese Funktion kann als Standardwert für eine TIMESTAMP-Spalte festgelegt werden. Es ist jedoch wichtig zu beachten, dass es den aktuellen Moment und nicht ein bestimmtes Datum darstellt.

UPDATE: In MySQL 8.0.13 gab es eine wesentliche Änderung. CURRENT_DATE und CURDATE() werden jetzt als Standardwerte für DATE-Spalten unterstützt. Dieses Update behebt die in diesem Artikel beschriebene Einschränkung.

Das obige ist der detaillierte Inhalt vonWarum funktioniert CURRENT_DATE/CURDATE() nicht als Standardwert für MySQL-DATE-Spalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn