sql >> Base de Datos >  >> RDS >> Mysql

MYSQL:SI tiene una condición OR y una coincidencia de REGEXP

Finalmente obtuve la versión final y correcta de trigger después de depurar muchas posibilidades y buscar respuestas SO. Esperaba una respuesta rápida, ya que no era esa pregunta de SCI-FI que otros desarrolladores no pudieron descifrar.

Error 1 :Espacio entre ENDIF . Debería ser END IF .

Error 2 :Falta new.column de la definición del disparador;

VERSIÓN CORRECTA :

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