4

私は次のテーブル構造を持っています:

ここに画像の説明を入力してください

badge_idおよびinterface_id主キーです。

、のみを指定してINSERT操作を試みたbadge_idところ、失敗すると予想していましたが、interface_id デフォルトでは0になっています。

ここに画像の説明を入力してください

私は次のバージョンを実行しています:

ここに画像の説明を入力してください

誰かがデフォルトでゼロになる理由を説明できますか?これは失敗するべきではありませんか?前もって感謝します。

4

2 に答える 2

5

答えはCREATETABLEのドキュメントにあります。

列定義に明示的なDEFAULT値が含まれていない場合、MySQLは、セクション11.5「データ型のデフォルト値」で説明されているようにデフォルト値を決定します。

詳細については、データ型のデフォルト値を参照してください。

暗黙のデフォルトは次のように定義されます。数値型の場合、デフォルトは0です。ただし、AUTO_INCREMENT属性で宣言された整数型または浮動小数点型の場合、デフォルトはシーケンスの次の値です。

于 2013-03-26T11:55:56.433 に答える
2

これをチェックしてください:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

MySQL 5.0.2以降、列定義に明示的なDEFAULT値が含まれていない場合、MySQLは次のようにデフォルト値を決定します。

列がNULLを値として取ることができる場合、列は明示的なDEFAULTNULL節で定義されます。これは5.0.2以前と同じです。

列が値としてNULLをとることができない場合、MySQLは明示的なDEFAULT句なしで列を定義します。データ入力の場合、INSERTまたはREPLACEステートメントに列の値が含まれていない場合、MySQLはその時点で有効なSQLモードに従って列を処理します。

厳密なSQLモードが有効になっていない場合、MySQLは列を列データ型の暗黙的なデフォルト値に設定します。

于 2013-03-26T11:59:10.403 に答える