是否可以创建特定属性必须以数字结尾的 DDL 表?



我是MySQL的新手。 我正在尝试创建具有属性"密码"的表"客户"。

我想知道是否可以在DDL中进行约束,该密码必须包含5个字符,而最后一个是数字(其中之一:0-9(

我试图寻找答案,但找不到。 我很确定我不能满足这个条件,但我会很高兴听到比我更了解的人的意见。 谢谢!

您的要求永远不应该成为实际考虑因素,因为您不应该首先在MySQL数据库中存储明文密码。 相反,您应该在PHP服务器代码中检查密码创建(以及可能在前端(。 如果有效,则应对密码进行不可逆的哈希处理,然后将哈希存储在用户表中。 您可以使用以下正则表达式模式获取确切的指定要求:

^.{4,}d$

这将匹配 5 个或更多任何类型的字符,其中最后一个是数字。 有关更好的密码强度以及如何为此编写正则表达式的更多想法,请考虑阅读规范的 SO 问题 正则表达式以验证密码强度。

编辑:

鉴于您似乎正在使用 SQL Server,如果您确实需要一个包含您要求的明文密码列,则可以使用 check 约束:

CREATE TABLE users (
id INT NOT NULL,
password VARCHAR(100) NOT NULL,
CONSTRAINT check_password
CHECK (LEN(password) >= 5 AND RIGHT(password, 1) LIKE '[0-9]')
);

为什么不为条目创建一个PHP页面并在该页面上设置所有限制呢?

就像在MySql中一样,你不能有那么多限制。

您还可以起诉MySql插入值的程序并从那里放置限制。

相关内容

最新更新