Най-накрая получих окончателната и правилна версия на тригера след отстраняване на грешки на много възможности и копаене на SO отговори. Очаквах бърз отговор, тъй като не беше въпросът за SCI-FI, който други разработчици не можаха да намерят.
Грешка 1 :Интервал между ENDIF
. Трябва да е END IF
.
Грешка 2 :Липсва new.column
от дефиницията на тригера;
ПРАВИЛНА ВЕРСИЯ :
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