如何在mysql中进行字母数字约束?
在数据库上做作业。使用MySQL,我的任务是创建包含多个表的数据库。其中之一是worker表,其中主键是WId,它是由16个A-Z和0-9个元素组成的字符串。我需要做一个约束,这样就不可能把它放在那里!@#$%^等等如何在mysql中进行字母数字约束?,mysql,sql,database,tabs,Mysql,Sql,Database,Tabs,在数据库上做作业。使用MySQL,我的任务是创建包含多个表的数据库。其中之一是worker表,其中主键是WId,它是由16个A-Z和0-9个元素组成的字符串。我需要做一个约束,这样就不可能把它放在那里!@#$%^等等 谢谢。您可以始终使用SIGNAL关键字返回错误: 编辑1: 根据@Gordon_linoff的评论:如果您希望Id发生更改,则必须在插入之前执行,在更新之前执行 CREATE TRIGGER myTrigger BEFORE INSERT ON worker FO
谢谢。您可以始终使用
SIGNAL
关键字返回错误:
编辑1:
根据@Gordon_linoff的评论:如果您希望Id发生更改,则必须在插入之前执行,在更新之前执行
CREATE TRIGGER myTrigger
BEFORE INSERT
ON worker
FOR EACH ROW
BEGIN
IF NOT (NEW.WId REGEXP '^[A-Za-z0-9]+$')
THEN
BEGIN
SIGNAL sqlstate '45000' set message_text = 'TADA!';
END;
END IF;
END;
MySQL不支持检查约束,所以您需要使用触发器。好的,谢谢,您能告诉我如何使用触发器检查吗?@TeamBeam so不是代码编写服务。做你自己的研究,把你尝试过的东西贴在你不能用的地方。你应该也有一个<代码>更新/代码>触发器。@ TeamBeam,如果它满足你的需要,请考虑关闭这个问题。
CREATE TRIGGER myTrigger
BEFORE INSERT
ON worker
FOR EACH ROW
BEGIN
IF NOT (NEW.WId REGEXP '^[A-Za-z0-9]+$')
THEN
BEGIN
SIGNAL sqlstate '45000' set message_text = 'TADA!';
END;
END IF;
END;