ENUM
および SET
カラムによって、特定の値セットのみを含むカラムを効率的に定義することができます。 セクション11.3.5「ENUM 型」およびセクション11.3.6「SET 型」を参照してください。
厳密モードが無効になっていないかぎり (推奨されませんが、セクション5.1.11「サーバー SQL モード」 を参照)、ENUM
または SET
カラムの定義は、カラムに入力された値に対する制約として機能します。 これらの条件を満たさない値には、エラーが発生します。
ENUM
値は、カラム定義に一覧表示されている値のいずれかか、それと内部数値的に同等のものである必要があります。 その値はエラー値 (つまり、0 または空の文字列) にはなりえません。ENUM('a','b','c')
として定義されたカラムでは、''
、'd'
、'ax'
などの値は無効であり拒否されます。SET
値は空の文字列にするか、カンマで区切られたカラム定義に一覧表示されている値だけから構成された値にする必要があります。SET('a','b','c')
として定義されたカラムの場合、'd'
や'a,b,c,d'
などの値は無効であり拒否されます。
無効な値に対するエラーは、INSERT IGNORE
または UPDATE IGNORE
を使用している場合、厳密モードで抑制できます。 この場合、エラーではなく警告が発せられます。 ENUM
に対しては、その値はエラーメンバー (0
) として挿入されます。 SET
に対しては、無効な部分文字列が削除されるという点を除いて、その値は与えられたとおりに挿入されます。 たとえば、'a,x,b,y'
は 'a,b'
の値となります。