У меня проблема с проверкой моего запроса в MySQL с использованием enum. как я знаю, MySQL не поддерживает с ограничением, поэтому я использую enum
Пример кода:
alter table jewerly modify gender enum('M','F') NOT NULL DEFAULT 'M';
он работает хорошо, если я использую, как указано выше, но у меня есть проблема, чтобы проверить в другом состоянии.
я хочу изменить валидацию с помощью enum для: введенный формат productID должен выглядеть следующим образом: PR [xxx], xxx означает число. если мы используем ограничение, это будет похоже на ‘PR [0-9] [0-9] [0-9]’,
но я не знаю, как использовать в enum.
alter table jewelry modify jewelid enum('PR[0-9][0-9][0-9]') NOT NULL;
я пробовал этот запрос выше, но он не работает .. есть идеи?
То, что вы пытаетесь сделать, не имеет смысла в MySQL. Вы, кажется, используете формат регулярного выражения для enum
определение.
Хотя enum может использоваться для такой проверки, у него есть некоторые недостатки. Например, существуют ограничения на количество значений. Изменение типа может быть проблематичным — например, исправление орфографической ошибки.
Вместо этого вы можете рассмотреть возможность использования внешних ключей для этой цели:
create table ref_jewelid (
jewelid varchar(255)
);
create table jewelry (
. . .
constraint fk_jewelid foreign key (jewelid) references ref_jewelid(jewelid)
);
Вы бы тогда заселили ref_jewelid
с допустимыми значениями, возможно, используя электронную таблицу для генерации имен. Вы могли бы даже сделать этот шаг вперед и иметь jewelid
быть добросовестный числовой идентификатор, имя которого является одним из его атрибутов. Такой подход я бы, вероятно, выбрал.
Других решений пока нет …