Mengacu pada manual ,
Untuk entri data untuk kolom NOT NULL yang tidak memiliki klausa DEFAULT eksplisit, jika pernyataan INSERT atau REPLACE tidak menyertakan nilai untuk kolom, atau pernyataan UPDATE menyetel kolom ke NULL, MySQL menangani kolom sesuai dengan mode SQL yang berlaku pada saat:
- Jika mode SQL ketat tidak diaktifkan, MySQL menyetel kolom ke nilai default implisit untuk tipe data kolom.
- Jika mode ketat diaktifkan, kesalahan terjadi untuk tabel transaksional dan pernyataan dibatalkan. Untuk tabel nontransaksional, terjadi
kesalahan, tetapi jika ini terjadi pada baris kedua atau selanjutnya dari pernyataan beberapa baris, baris sebelumnya akan disisipkan.
Jadi pertanyaan Anda sekarang mungkin, apa nilai default implisit untuk berbagai tipe data kolom? Ini dia:
Default implisit didefinisikan sebagai berikut:
- Untuk tipe numerik, defaultnya adalah 0, dengan pengecualian untuk tipe integer atau floating-point yang dideklarasikan dengan atribut AUTO_INCREMENT
, defaultnya adalah nilai berikutnya dalam urutan.- Untuk jenis tanggal dan waktu selain TIMESTAMP, nilai defaultnya adalah nilai “nol” yang sesuai untuk jenis tersebut. Untuk kolom TIMESTAMP pertama dalam sebuah tabel, nilai defaultnya adalah tanggal dan waktu saat ini. Lihat Bagian 10.3, “Jenis Tanggal dan Waktu”.
- Untuk tipe string selain ENUM, nilai defaultnya adalah string kosong. Untuk ENUM, defaultnya adalah nilai enumerasi pertama.