Spec-Zone.ru › MySQL 5.7

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

ENUM и SET столбцы предоставляют эффективный способ определения столбцов, которые могут содержать только заданный набор значений. См. раздел 11.3.5, «Тип ENUM» и раздел 11.3.6, «Тип SET».

Если режим strict не отключен (не рекомендуется, но см. раздел 5.1.10, «Режим SQL сервера»), определение столбца типа ENUM или SET действует как ограничение на вводимые в столбец значения. Возникает ошибка для значений, которые не удовлетворяют этим условиям:

  • Значение ENUM должно быть одним из перечисленных в определении столбца или его внутренним числовым эквивалентом. Значение не может быть значением ошибки (то есть 0 или пустой строкой). Для столбца, определенного как ENUM('a','b','c'), такие значения, как '', 'd' или 'ax', являются недопустимыми и будут отклонены.

  • Значение SET должно быть пустой строкой или значением, состоящим только из значений, перечисленных в определении столбца, разделенных запятыми. Для столбца, определенного как SET('a','b','c'), такие значения, как 'd' или 'a,b,c,d', являются недопустимыми и будут отклонены.

Ошибки для недопустимых значений могут быть подавлены в режиме strict, если вы используете 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-5.7-en/constraint-enum.html

Spec-Zone.ru

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