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

Is it possible to create DDL table where specific attribute has to end with digit?

我是 MySQL 的新手。 我正在尝试使用属性 "Password".

创建 table "Customer"

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

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

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

和MySql一样,你不能有那么多限制。

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

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

^.{4,}\d$

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

编辑:

鉴于您似乎正在使用 SQL 服务器,如果您确实需要一个符合您要求的明文密码列,您可以使用检查约束:

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]')
);