5

我有一张桌子,当我describe是:

mysql> DESC my_table;  
+------------+-------------+------+-----+---------+----------------+  
| Field      | Type        | Null | Key | Default | Extra          |  
+------------+-------------+------+-----+---------+----------------+  
| contact_id | int(11)     | NO   | PRI | NULL    | auto_increment |  
| location   | varchar(20) | YES  |     | NULL    |                |  
| city       | varchar(20) | YES  |     | NULL    |                |  
| state      | varchar(2)  | YES  |     | NULL    |                |  
+------------+-------------+------+-----+---------+----------------+  
4 rows in set (0.01 sec)  

contact_id我的问题是:为什么主键Default显示为NULL?我为该列
创建了表,但无论如何都不能。 怎么可能?_ _NOT NULLPrimary KeyNULL
NullNODefaultNULL

4

4 回答 4

5

它不能为空的事实使得“默认”列的内容无关紧要。他们在“默认”列中使用“空”,否则他们将需要另一个魔术值来指示“不相关”、“未使用”、结束。

别担心。

于 2013-04-06T12:55:58.013 回答
4

NOT NULL在 MySQL 中用于表示该字段不能为空。在您的情况下, Primary Key 字段contact_id在属性中正确显示为 No NullDefault数据类型规范中的子句指示列的默认值。这里您的主键字段contact_id没有任何默认值。所以显示为NULL

于 2013-04-06T11:58:16.980 回答
0

请放心,即使默认列显示(NULL)主键字段的值,也没关系。让我们列出 Default 具有此 (NULL) 值的所有情况:

  • 如果您的 SQL 请求为主字段提供值:不调用默认值

  • 如果您的 SQL 请求没有提供值而是自动增量字段:不调用默认值

  • 如果您的 SQL 请求未提供值并且该字段不是自动增量并且可以为 null :调用默认值并插入 NULL

  • 如果您的 SQL 请求未提供值且该字段不是自动增量且不能为空:调用默认值但您收到错误消息,告诉您该字段“不能为空”

希望这可以帮助。

于 2015-09-21T09:24:05.980 回答
0

在您的情况下,默认列中的 NULL 表示用户没有指定任何值作为默认值。

于 2020-08-07T10:16:50.540 回答