अंत में बहुत सारी संभावनाओं को डिबग करने और SO उत्तरों को खोदने के बाद ट्रिगर का अंतिम और सही संस्करण मिला। एक त्वरित प्रतिक्रिया की उम्मीद कर रहा था क्योंकि ऐसा नहीं था कि एससीआई-एफआई सवाल था कि अन्य डेवलपर्स क्रैक करने में असमर्थ थे।
गलती 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