MySQL 8.4 發行說明
ENUM
和 SET
資料行提供一種有效的方式來定義只能包含一組特定值的資料行。請參閱 第 13.3.5 節,「ENUM 型別」和 第 13.3.6 節,「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'
的值。