MySQL 9.0 版本資訊
ENUM
和 SET
資料行提供了一種有效的方式來定義只能包含一組給定值的資料行。請參閱第 13.3.6 節「ENUM 類型」和第 13.3.7 節「SET 類型」。
除非停用嚴格模式(不建議,但請參閱第 7.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'
的值。