Mysql
 sql >> Base de données >  >> RDS >> Mysql

MYSQL:IF ayant la condition OR et la correspondance REGEXP

Enfin obtenu la version finale et correcte du déclencheur après avoir débogué de nombreuses possibilités et creusé les réponses SO. Je m'attendais à une réponse rapide car ce n'était pas cette question SCI-FI que les autres développeurs n'ont pas pu résoudre.

Erreur 1 :Espace entre ENDIF . Il devrait être END IF .

Erreur 2  :new.column manquant à partir de la définition du déclencheur ;

VERSION CORRECTE :

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