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!