10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb


11.6デタ型デフォルト値

デタ型仕様の默认的价值句は,カラムのデフォルト値を示しています。例外が1あります。デフォルト値は定数である必要があるので,関数または式にはできません。これは,たとえば日付カラムのデフォルト値に现在()当前日期などの関数の値を設定できないことを意味します。例外では,CURRENT_TIMESTAMPを,时间戳およびDATETIMEカラムのデフォルトとして指定できます。セクション11.3.5 " timestampおよびdatetimeの自動初期化および更新機能"を参照してください。

および文本カラムにはデフォルト値を割り当てられません。

カラム定義に明示的な默认的値が含まれていない場合,MySQLはデフォルト値を次のように特定します。

を値として取ることができる場合は,そのカラムは明示的な默认为空句で定義ができます。

を値として取ることができない場合は,MySQLは明示的な默认的句でカラムを定義できません。例外:カラムが主键の一部として定義されているが,非空として明示的には定義されていない場合,MySQLはこれを非空カラムとして作成します(主键カラムは非空である必要があるので)が,暗黙的なデフォルト値を使用してこれに默认的句も割り当てます。これを防止するには,すべての主键カラムの定義に明示的な非空を含めてください。

明示的な默认的句のない非空カラムに対するデタエントリでは,插入または取代ステトメントにカラムの値を含まれていない場合,または更新ステトメントがカラムをに設定する場合,MySQLはその時点で有効なSQLモドに従ってカラムを処理します。

  • 厳密なSQLモードを有効にした場合,トランザクションテーブルに対してエラーが発生し,ステートメントがロールバックされます。非トランザクションテーブルではエラーが起きるが,これが複数行ステートメントの2行目以降の行に対するエラーの場合,先行する行が挿入されています。

  • 厳密モードが有効でない場合,MySQLはカラムデータ型の暗黙的なデフォルト値にカラムを設定します。

テブルtが次のように定義されるとします。

创建表t (i INT NOT NULL);

この場合,は明示的なデフォルトがないので,厳密モードでは次のそれぞれはステートメントはエラーになり,行は挿入されません。厳密モドを使用しない場合,3番目のステが発生します。最初の2のステトメントでは暗黙のデフォルトが挿入されますが,默认的(我)が値を生成できないので3番目のステトメントは失敗します。

INSERT INTO t VALUES();INSERT INTO t VALUES(默认);INSERT INTO t VALUES(DEFAULT(i));

セクション5.1.7 "サバSQLモド"を参照してください。

所定のテブルに対して,显示创建表ステトメントを使用すると,どのカラムに明示的な默认的句があるかを確認できます。

暗黙的なデフォルトは次のように定義されます。

  • 数値型のデフォルトは0です。ただし,例外としてAUTO_INCREMENT属性で宣言された整数型または浮動小数点型のデフォルトは,そのシケンスの次の値になります。

  • 时间戳以外の日付と時間型のデフォルトには,ゼロ値が適切です。explicit_defaults_for_timestampシステム変数が有効な場合,これは时间戳にも当てはまります(セクション5.1.4 "サバシステム変数"を参照してください)。それ以外の場合,テブルの最初の时间戳カラムのデフォルト値は現在の日付と時間になります。セクション11.3 "日付と時間型"を参照してください。

  • 枚举ではない文字列型のデフォルト値は空の文字列です。枚举のデフォルトは,最初の列挙値です。

整数カラム定義の中の串行默认值不是null auto_increment唯一のエ邮箱リアスです。


本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb