Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL:WENN OR-Bedingung ®EXP übereinstimmen

Endlich die endgültige und korrekte Version von Trigger erhalten, nachdem viele Möglichkeiten debuggt und SO-Antworten ausgegraben wurden. Hatte eine schnelle Antwort erwartet, da es nicht diese SCI-FI-Frage war, die andere Entwickler nicht lösen konnten.

Fehler 1 :Leerzeichen zwischen ENDIF . Es sollte END IF sein .

Fehler 2 :new.column fehlt aus Triggerdefinition;

KORREKTE VERSION :

CREATE TRIGGER `trg_contact_insert_profanity_check` BEFORE INSERT ON `contacts`
 FOR EACH ROW BEGIN
IF ((new.email IN (SELECT word FROM profanity)) OR (new.message
 IN (SELECT word FROM profanity)) OR (new.message REGEXP '/(http|https|ftp|ftps)?(://)?[a-zA-Z0-9-.]+.[a-zA-Z]{2,3}(/S*)?/' ))
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = "Database Error: BAD REQUEST";
END IF;
END