Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL menambahkan kolom NOT NULL

Di MySQL, setiap jenis kolom memiliki "default implisit " nilai .

Jika kolom NOT NULL ditambahkan ke tabel , dan tidak ada DEFAULT eksplisit yang ditentukan, nilai default implisit digunakan untuk mengisi data kolom baru. Aturan serupa berlaku saat nilai DEFAULT ditentukan.

Dengan demikian, DDL asli menghasilkan hasil yang sama seperti:

-- After this, data will be the same, but schema has an EXPLICIT DEFAULT
ALTER TABLE t ADD c varchar(10) NOT NULL DEFAULT ''
-- Now we're back to the IMPLICIT DEFAULT (MySQL stores NULL internally)
ALTER TABLE t ALTER c DROP DEFAULT

Setelan mode "ketat" memengaruhi pernyataan DML yang mengandalkan nilai default, tetapi tidak memengaruhi penggunaan default implisit saat kolom ditambahkan.

Ini sebuah "bukti" sqlfiddle bahwa mode ketat tidak berlaku untuk pernyataan ALTER TABLE .. ADD.

Ini adalah fitur MySQL. Mesin lain, seperti SQL Server, memerlukan batasan DEFAULT (atau kolom NULL) eksplisit untuk perubahan skema tersebut.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php pdo hanya mendapatkan satu nilai dari mysql; nilai yang sama dengan variabel

  2. Masalah catatan aktif CodeIgniter yang memanggil beberapa prosedur tersimpan

  3. Kemungkinan nilai pengembalian untuk mysql_affected_rows()

  4. Doctrine 2 DQL KASUS KETIKA di Hitung

  5. Bagaimana mengubah izin baca-saja untuk menetapkan nilai baru variabel sistem server MySQL