This MySQL table had me perplexed for a moment:
mysql> desc quux;
+---------------------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------------+-----------------------+------+-----+---------+----------------+
| foobar | int(11) | NO | | NULL | |
(...)
mysql> show create table quux;
(...)
`foobar` int(11) NOT NULL,
(...)
Since the foobar
field was never created with a DEFAULT clause, it gets automatically assigned DEFAULT NULL. However, at a first sight this looks like contradicting the fact that it was also defined as NOT NULL.
Then I realized that this schema aims to force to insert a value (and a non-NULL one) in foobar
when adding a new record.
Is this an acceptable way to do so, or there are better ways?
NULL
is not, itself, an actual value, but rather a marker signifying the absence of any value.