【问题标题】:Validate Using Enum in MYSQL在 MYSQL 中使用枚举验证
【发布时间】:2023-03-21 03:20:01
【问题描述】:

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

示例代码:

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; 

我在上面尝试过这个查询,但它不起作用..有什么想法吗?

【问题讨论】:

  • 来自docs:枚举值必须是带引号的字符串文字。恐怕你运气不好。
  • 这不是枚举在 MySQL 中的工作方式。见docs;你不能在枚举中使用正则表达式。

标签: php mysql validation enums


【解决方案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,名称是它的一个属性。这就是我可能会采取的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2023-02-10
    • 2010-09-06
    • 2012-07-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多