我有一个表用户。如果某人插入新记录,其中包含姓名或姓氏字符与a-z,A-Z或空格不同,则会出错并发生错误。代码失败,因为在第一次THEN应该是什么,但我不知道该放什么内容。因为我只想在if语句为真时执行insert。
delimiter //
CREATE TRIGGER check_name_surname
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
IF NEW.name REGEXP '^[a-zA-Z' '.]+$' and NEW.surname REGEXP '^[a-zA-Z' '.]+$' then
ELSE
SIGNAL SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Incorrect name and surname';
END IF;
END;//
delimiter;
答案 0 :(得分:2)
如果你的IF语句中没有任何内容,那么你必须'否定'else条件并将其放入if。
所以在这里你会抛出错误,如果名字不是字母数字或姓氏不是字母数字。
IF NEW.name NOT REGEXP '^[a-zA-Z' '.]+$' OR NEW.surname NOT REGEXP '^[a-zA-Z' '.]+$' THEN
SIGNAL SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Incorrect name and surname';
END IF;
不要忘记AND运算符变为OR。