MySQL staat toe dat de waarde NULL is als u NOT NULL
niet opgeeft in de kolomdefinitie.
Hier is een snelle test:
mysql> create table test (id serial, field ENUM('Y','N') DEFAULT 'N');
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO test (field) VALUES ('Y');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO test (field) VALUES ('N');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO test () VALUES ();
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO test (field) VALUES (NULL);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO test (field) VALUES ('Invalid');
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+--------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------+
| Warning | 1265 | Data truncated for column 'field' at row 1 |
+---------+------+--------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from test;
+----+-------+
| id | field |
+----+-------+
| 1 | Y |
| 2 | N |
| 3 | N |
| 4 | NULL |
| 5 | |
+----+-------+
5 rows in set (0.00 sec)
Dus MySQL respecteert de standaardwaarde, maar staat ook NULL's toe. (Interessant is dat het ongeldige waarden afkapt en ook lege tekenreeksen toelaat, maar dat is een ander probleem)