php - 在 MYSQL 中使用 Enum 进行验证

标签 php mysql validation enums

我在使用枚举验证 mysql 中的查询时遇到问题。据我所知 mysql 不支持约束,所以我使用 enum

示例代码:

alter table jewerly modify gender enum('M','F') NOT NULL DEFAULT 'M';

如果我像上面那样使用它运行良好,但我在另一种情况下验证时遇到问题。

我想用枚举修改验证:输入的产品ID格式必须类似于: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; 

我尝试了上面的查询,但它不起作用......有什么想法吗?

最佳答案

您尝试做的事情在 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,名称是它的一个属性。这就是我可能会采取的方法。

关于php - 在 MYSQL 中使用 Enum 进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535345/

相关文章:

sql-server - 我应该在电话的 SQL varchar(length) 中考虑最长的全局电话号码是多少

php - 通过 PHP 使用 Google 身份验证 API

php - 表 UI View : Mysql - Php

javascript - 从下拉菜单上的子类别中获取父级

java - 连接池中的 Tomcat-Mysql 连接在空闲时间后超时

Mysql 返回不正确的 bigint 结果 1,非常奇怪的错误

Mysql优化查询: Trying to Get Average of Subquery

javascript - php中文件上传的文件路径

代码点火器。验证 PUT 数据

mysql GROUP BY 子句验证