sql >> Database >  >> RDS >> Mysql

MYSQL:ALS OR-conditie en REGEXP overeenkomen

Eindelijk de definitieve en juiste versie van trigger gekregen na het debuggen van veel mogelijkheden en het graven van SO-antwoorden. Verwachtte een snel antwoord, want het was niet die SCI-FI-vraag die andere ontwikkelaars niet konden oplossen.

Fout 1 :spatie tussen ENDIF . Het zou END IF moeten zijn .

Fout 2 :Ontbrekende new.column van triggerdefinitie;

CORRECTE VERSIE :

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



  1. Cloud9 postgres

  2. Waarden doorgeven aan MySQL IN-bewerking in door PDO voorbereide instructie?

  3. node-mysql waar gaat connection.end() naartoe

  4. Ontdek collatie van een MySQL-kolom