MySQLでは、各列タイプに" 暗黙のデフォルト 「価値 。
NOTNULL列が
そのため、元のDDLは次と同じ結果を生成します。
-- After this, data will be the same, but schema has an EXPLICIT DEFAULT
ALTER TABLE t ADD c varchar(10) NOT NULL DEFAULT ''
-- Now we're back to the IMPLICIT DEFAULT (MySQL stores NULL internally)
ALTER TABLE t ALTER c DROP DEFAULT
「厳密な」モード設定は、デフォルト値に依存するDMLステートメントに影響しますが、列が追加されたときの暗黙的なデフォルトの使用には影響しません。
これが
これはMySQLの機能です。 SQL Serverなどの他のエンジンでは、このようなスキーマの変更に対して明示的なDEFAULT(またはNULL列)制約が必要です。