gpt4 book ai didi

mysql - 如何使用 mysql 防止在 VARCHAR 列中使用数字?

转载 作者:行者123 更新时间:2023-11-29 20:59:17 27 4
gpt4 key购买 nike

我有一个名为user的表,它将通过user_id和用户名来查询。虽然 user_id 的类型为 int,但username(属于 varchar 类型)不应 包含数字。该程序可以帮助检查输入,但我想通过不允许数据库级别上已有的纯数字来双重保护它。

如何实现这一点?

最佳答案

您正在寻找 CHECK SQL 运算符。不幸的是,任何 MySQL 引擎都不支持这一点。

不过,有一个解决方法,即使用 SQL 触发器。您可以在 CHECK constraint in MySQL is not working 找到更多信息和 http://dev.mysql.com/doc/refman/5.7/en/create-trigger.html

所以,对我来说(需要 MySQL 5.5+),以下代码片段有效:

use test;

CREATE TABLE user (
`user_id` INT NOT NULL,
`username` VARCHAR(50) NULL,
PRIMARY KEY (`id`)
);

delimiter //

create trigger trg_trigger_test_ins before insert on user
for each row
begin
if new.username REGEXP '^[0-9]*$' then
signal sqlstate '45000' set message_text = 'Invalid username containing only digits';
end if;
end
//

delimiter ;

insert into user values(1, '1234');

最后一个 INSERT 语句引发了错误代码:1644。仅包含数字的用户名无效 while

insert into `test`.`user` values(1, 'a1234');

已正确插入。

注意:也对 Throw an error in a MySQL trigger 表示赞赏关于信号的想法。

请注意,此示例仅防止 INSERT。如果你想安全,还需要在UPDATE上实现触发器。

关于mysql - 如何使用 mysql 防止在 VARCHAR 列中使用数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com