Spec-Zone.ru › MySQL 8.4

1.7.3.3 Ограничения ENUM и SET

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'.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/constraint-enum.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API