MYSQL如果没有做任何事情

时间:2018-01-31 16:07:52

标签: mysql triggers insert

我有一个表用户。如果某人插入新记录,其中包含姓名或姓氏字符与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;

1 个答案:

答案 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。