Rumah > pangkalan data > tutorial mysql > Mengapa CURRENT_DATE/CURDATE() Tidak Berfungsi sebagai Nilai Lalai untuk Lajur MySQL DATE?

Mengapa CURRENT_DATE/CURDATE() Tidak Berfungsi sebagai Nilai Lalai untuk Lajur MySQL DATE?

Mary-Kate Olsen
Lepaskan: 2024-12-20 02:53:09
asal
536 orang telah melayarinya

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

Isu Nilai Tarikh Lalai dengan CURRENT_DATE/CURDATE()

Dalam dunia MySQL, anda mungkin menghadapi soalan yang kelihatan mudah: mengapa' t CURRENT_DATE atau CURDATE() berfungsi sebagai nilai lalai untuk DATE lajur?

Teka-teki: Mengapa Ia Tidak Berfungsi?

Seperti yang anda jangkakan, kod ini sepatutnya berfungsi tanpa masalah:

CREATE TABLE INVOICE(
   INVOICEDATE DATE NOT NULL DEFAULT CURRENT_DATE
)
Salin selepas log masuk

Walau bagaimanapun, amat mengejutkan kami, ia tidak. Apakah sebab di sebalik teka-teki ini?

Jawapan: Pengehadan MySQL

Jawapannya terletak pada pengehadan dalam MySQL. Walaupun bersifat intuitif, menetapkan nilai lalai lajur DATE kepada CURRENT_DATE atau CURDATE() tidak disokong.

Menurut dokumentasi MySQL, nilai lalai mestilah pemalar dan bukannya fungsi atau ungkapan. Ini menghapuskan kemungkinan menggunakan fungsi ini untuk menetapkan tarikh lalai secara dinamik.

Pengecualian: CURRENT_TIMESTAMP

Pengecualian kepada peraturan ini ialah CURRENT_TIMESTAMP. Fungsi ini boleh ditetapkan sebagai nilai lalai untuk lajur TIMESTAMP. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ia mewakili detik semasa, bukan tarikh tertentu.

KEMASKINI: Dalam MySQL 8.0.13, terdapat perubahan ketara. CURRENT_DATE dan CURDATE() kini disokong sebagai nilai lalai untuk lajur DATE. Kemas kini ini menangani had yang dibincangkan dalam artikel ini.

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

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan