我在使用enum在mysql中验证我的查询时遇到问题。因为我知道mysql不支持约束所以我使用枚举
示例代码:
alter table jewerly modify gender enum('M','F') NOT NULL DEFAULT 'M';
如果我像上面那样使用它会运行良好,但我有一个问题需要在另一个条件下进行验证。
我想用enum修改验证:输入的productID格式必须如下:PR [xxx],xxx表示数字。如果我们使用约束,它将类似于PR [0-9] [0-9] [0-9]', 但我不知道如何在枚举中使用。
alter table jewelry modify jewelid enum('PR[0-9][0-9][0-9]') NOT NULL;
我在上面尝试了这个查询,但它不起作用..任何想法?
答案 0 :(得分:1)
你试图做的事在MySQL中毫无意义。您似乎正在使用enum
定义的正则表达式格式。
虽然枚举可用于此类验证,但它有一些缺点。例如,值的数量有限制。更改类型可能会有问题 - 例如修复拼写错误。
相反,您可以考虑使用外键来实现此目的:
create table ref_jewelid (
jewelid varchar(255)
);
create table jewelry (
. . .
constraint fk_jewelid foreign key (jewelid) references ref_jewelid(jewelid)
);
然后,您可以使用有效值填充ref_jewelid
,也许使用电子表格生成名称。您甚至可以更进一步,让jewelid
成为真正的数字ID,其名称是其中的一个属性。这是我可能采取的方法。