dr_*_*dr_ 7 mysql null mysql-5.6
这个 MySQL 表让我困惑了一会儿:
mysql> desc quux;
+---------------------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------------+-----------------------+------+-----+---------+----------------+
| foobar | int(11) | NO | | NULL | |
(...)
mysql> show create table quux;
(...)
`foobar` int(11) NOT NULL,
(...)
Run Code Online (Sandbox Code Playgroud)
由于foobar
从未使用 DEFAULT 子句创建该字段,因此它会自动分配 DEFAULT NULL。然而,乍一看,这似乎与它也被定义为 NOT NULL 的事实相矛盾。
然后我意识到这个模式旨在foobar
在添加新记录时强制插入一个值(和一个非 NULL 值)。
这是一种可以接受的方法,还是有更好的方法?
这是完全可以接受的,它基本上是这样说的:
你必须为此提供一个值,但我不知道那会是什么。
如果您定义了默认值,则您声称对于任何不提供值的行来说,这是一个合理的值——这对于大多数属性来说并不真正可行。
考虑一个名为的列first_name
- 您想确保提供了一个值,但您无法为此想出一个合理的默认值。或者salary
在员工表中命名的列。
归档时间: |
|
查看次数: |
5583 次 |
最近记录: |