MySQL 8.0 リファレンスマニュアル


1.7.3.4 ENUM および SET の制約

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' の値となります。


関連キーワード:  制約, ENUM, カラム, 定義, エラー, 標準, 一般, 機能, サーバー, KEY