在MYSQL中使用枚举验证

时间:2015-12-30 18:47:13

标签: php mysql validation enums

我在使用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; 

我在上面尝试了这个查询,但它不起作用..任何想法?

1 个答案:

答案 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,其名称是其中的一个属性。这是我可能采取的方法。