私は次のテーブル構造を持っています:
badge_id
およびinterface_id
は主キーです。
、のみを指定してINSERT操作を試みたbadge_id
ところ、失敗すると予想していましたが、interface_id
デフォルトでは0になっています。
私は次のバージョンを実行しています:
誰かがデフォルトでゼロになる理由を説明できますか?これは失敗するべきではありませんか?前もって感謝します。
答えはCREATETABLEのドキュメントにあります。
列定義に明示的なDEFAULT値が含まれていない場合、MySQLは、セクション11.5「データ型のデフォルト値」で説明されているようにデフォルト値を決定します。
詳細については、データ型のデフォルト値を参照してください。
暗黙のデフォルトは次のように定義されます。数値型の場合、デフォルトは0です。ただし、AUTO_INCREMENT属性で宣言された整数型または浮動小数点型の場合、デフォルトはシーケンスの次の値です。
これをチェックしてください: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は列を列データ型の暗黙的なデフォルト値に設定します。