多くの可能性をデバッグし、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