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!