我知道我可以创建基本的比较触发器(见下文)
CREATE TRIGGER HospitalCheck
BEFORE INSERT ON Hospital
FOR EACH ROW
BEGIN
IF NEW.HospitalID > 9999 THEN
call fail('HOSPITAL CODE INVALID');
END IF;
END
我如何使用仅允许数字的正则表达式? (而不是> 9999) (相当于SELECT 要检查的字符串 REGEXP'^ [0-9] + $')
我试过了:
IF NEW.HospitalID REGEX '^[0-9]+$' THEN
call fail('HOSPITAL CODE INVALID');
END IF;
但是我得到了
:错误: - > #1064 - 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'REGEX'附近使用正确的语法^ [0-9] + $'然后调用失败('HOSPITAL CODE INVALID');结束如果'在第5行
答案 0 :(得分:0)
NOT_REGEXP函数 - 请参阅文档http://dev.mysql.com/doc/refman/5.1/en/regexp.html
IF colname NOT_REGEXP '^[0-9]+$' THEN
答案 1 :(得分:0)
如果不是column_name REGEXP'^ [0-9] + $'然后
答案 2 :(得分:0)
只需更改正则表达式
IF NEW.HospitalID REGEX '^[^0-9]+$' THEN
call fail('HOSPITAL CODE INVALID');
END IF;
简而言之,这个正则表达式检查 HospitalID 变量,如果发现 HospitalID 变量具有非数字字符,则调用失败函数。