【发布时间】:2011-08-21 01:08:20
【问题描述】:
我知道我可以创建基本的比较触发器(见下文)
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;
但我明白了
: ERROR : --> #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'REGEX '^[0-9]+$' 附近使用正确的语法 THEN call fail('HOSPITAL CODE INVALID'); END IF' 在第 5 行
【问题讨论】:
-
是的,但我遇到了语法错误
-
IF NEW.HospitalID REGEX '^[0-9]+$' THENcall fail('HOSPITAL CODE INVALID');END IF;END: ERROR : --> #1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'REGEX '^[0-9]+$' 附近使用正确的语法 THEN call fail('HOSPITAL CODE INVALID'); END IF' 在第 5 行 -
如果它是数字,则该正则表达式会将其标记为无效。要么用 NOT_REGEXP 替换 REGEX(应该是 REGEXP),要么使用 '^[^0-9]+$'
-
附带说明,我希望您不要计划在
CHECK声明中使用它... xD