Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Tidak Sentiasa Menerima CURRENT_DATE/CURDATE() sebagai Nilai Lalai?

Mengapa MySQL Tidak Sentiasa Menerima CURRENT_DATE/CURDATE() sebagai Nilai Lalai?

Barbara Streisand
Barbara Streisandasal
2024-12-07 11:49:12805semak imbas

Why Doesn't MySQL Always Accept CURRENT_DATE/CURDATE() as a Default Value?

CURRENT_DATE/CURDATE() Isu Nilai Lalai dalam MySQL

Satu dilema biasa yang dihadapi oleh pembangun melibatkan penggunaan CURRENT_DATE atau CURDATE() fungsi sebagai nilai lalai untuk lajur DATE dalam MySQL. Walaupun jangkaan, fungsi ini tidak berfungsi seperti yang dimaksudkan.

Puncanya terletak pada sekatan MySQL pada nilai lalai. Biasanya, nilai lalai mestilah pemalar, bukan fungsi atau ungkapan. Oleh itu, menetapkan nilai lalai lajur DATE kepada NOW() atau CURRENT_DATE akan gagal.

CREATE TABLE INVOICE(
   INVOICEDATE DATE NOT NULL DEFAULT CURRENT_DATE
)

[Edit: Sokongan untuk CURRENT_DATE/CURDATE() sebagai Nilai Lalai]

Perlu diperhatikan bahawa MySQL versi 8.0.13 memperkenalkan sokongan untuk CURRENT_DATE dan CURDATE() sebagai nilai lalai untuk lajur DATE. Walau bagaimanapun, versi terdahulu tidak menyokong fungsi ini.

Pengecualian untuk Lajur TIMESTAMP

Pengecualian yang ketara kepada peraturan ialah kemungkinan menggunakan CURRENT_TIMESTAMP sebagai nilai lalai untuk TIMESTAMP lajur, yang disokong oleh MySQL. Sila rujuk dokumentasi MySQL untuk mendapatkan butiran lanjut tentang aspek ini.

Atas ialah kandungan terperinci Mengapa MySQL Tidak Sentiasa Menerima CURRENT_DATE/CURDATE() sebagai Nilai Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn