私にとって、問題(および、とデフォルト値の関係NULL || NOT NULL
)は、次のことを考慮するとより明確になります。
NOT NULL
⇒必須:デフォルト値が存在する必要があります。そうでない場合、値を指定せずにレコードを挿入することはできません(デフォルト値を指定するか、[なし]を選択します。⇒デフォルトを指定しないでください。これら2つのオプションのどちらかを選択する必要があります。後者このフィールドに値を指定せずに挿入すると、エラーが発生して拒否されることを意味するオプション)。一方:
NULL
⇒必須ではありません—フィールドに値が指定されていないか、値が不明であることNULL
を示します。(フィールドが「NULL可能」の場合、デフォルト値を指定したくないと言っても意味がありません。null可能性に応じて、このフィールドを指定しなくても挿入が許可されるためです。したがって、フィールドにはデフォルトが必要です。それがデフォルトであるか、特定の値であるかは関係ありません。)NULL
phpMyAdminを使用している場合は、関連するテーブルの[構造]タブにアクセスし、関連する列の定義を見つけて、[変更]を選択する必要があります。[デフォルト]ドロップダウンに、[なし]オプションが表示されます。これを選択して[保存]を押します。これが生成するSQLコマンドに注意すると、次のようになります。
ALTER TABLE `…_tbl` CHANGE `…_fld` `…_fld` TEXT NOT NULL;
ただし、ユーザーインターフェイスでデフォルトを「なし」に指定しようとすると、NULLを許可する必要があります。その場合、デフォルトは代わりに「」(空の文字列)または「0000-00-00 00:00:00」(フィールドの場合)などに戻りますDATETIME
。したがって、ここで重要なのは、列(フィールド)がNULL
ABLEかどうかです。か否か!
この「なし」オプションは、基盤となるデータベースで実際に何が起こっているかを表すためにphpMyAdminによって使用される抽象化のアーティファクトである可能性があります(これは何か別のものです)。
フィールドをNOT NULL
タイプに変更する前。最初に既存の値を確認し、承認した方法で値が自動的に変更されることを確認します。
言い換えると、 NULL
/ NOT NULL
、およびデフォルト値。は本質的に相互に関連しています。指定できる値の組み合わせを制限することによってこの関係を有効に表さないユーザーインターフェイスは、人間工学的に不十分です。phpMyAdminやおそらく他のツールは、この点で改善される可能性があります。