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_idDefaultとして表示されるのはなぜNULLですか? 列用に
テーブルを作成しましたが、とにかくできません。 どのようになることができますか?NOT NULLPrimary KeyNULL
NullNODefaultNULL

4

4 に答える 4

5

null にできないという事実により、「デフォルト」列の内容は無関係になります。彼らは「デフォルト」列で「ヌル」を使用しています。そうしないと、「無関係」、「未使用」、終了を示すために別の魔法の値が必要になるからです。

ご心配なく。

于 2013-04-06T12:55:58.013 に答える
0

デフォルトの列(NULL)に主キー フィールドの値が表示されていても問題ありませんのでご安心ください。Default がこの (NULL) 値を持つすべてのケースをリストしてみましょう:

  • SQL リクエストがプライマリ フィールドに値を提供する場合: デフォルトは呼び出されません

  • SQL リクエストが値を提供しないが自動インクリメント フィールドである場合: デフォルトは呼び出されません

  • SQLリクエストが値を提供せず、フィールドが自動インクリメントではなく、nullになる可能性がある場合: デフォルトが呼び出され、NULLが挿入されます

  • SQL リクエストが値を提供せず、フィールドが自動インクリメントではなく、null にできない場合: デフォルトが呼び出されますが、このフィールドは「null にすることはできません」というエラーが表示されます

お役に立てれば。

于 2015-09-21T09:24:05.980 に答える