" ENUM 列が NULL を許可するように宣言されている場合、NULL 値は列の有効な値であり、デフォルト値は NULL です。ENUM 列が NOT NULL と宣言されている場合、そのデフォルト値は、許可されているリストの最初の要素です。値。」
これに基づいて、INSERT ステートメントでフィールドの値を設定せず、ENUM フィールドが NULL を受け入れると宣言した場合、デフォルトで NULL になります。
[編集]
このテーブル定義がある場合、コメントに対処するには
CREATE TABLE IF NOT EXISTS `tbl_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` enum('New','Done') DEFAULT NULL,
PRIMARY KEY (`id`)
)
そして、あなたのWebアプリケーションは、このようなものを使用してUPDATEと既存のレコードを試みています
UPDATE `test`.`tbl_test` SET `type` = NULL WHERE `tbl_test`.`id` =1
値を NULL に設定します。
無効な列挙型データが HMTL ドロップダウンに表示されるリスクを軽減するには、ドロップダウンに表示する可能性のある ENUM 値をテーブルに照会します。これが私が見つけたPHPの例です
SHOW COLUMNS FROM `tbl_test` WHERE Field = 'type'
[編集]
追加のコメントに答えるには、ユーザーが NULL 値を選択できるようにし、空の文字列を有効な値として許可する場合は、次のようにドロップダウンを指定する必要があります
<select>
<option value="-1">-- not selected ---</option>
<option value=""></option>
<option value="Book">Book</option>
<option value="Music">Music</option>
</select>
属性を使用する<option value= ...>
ことで、WebApp に POST される値を制御し、それに応じて処理できます。この例では、値は-1
WebApp によって NULL に変換されます