Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MYSQL:IF ma warunek OR i dopasowanie REGEXP

W końcu otrzymałem ostateczną i poprawną wersję wyzwalacza po debugowaniu wielu możliwości i wykopaniu odpowiedzi SO. Spodziewałem się szybkiej odpowiedzi, ponieważ nie było to pytanie SCI-FI, którego inni programiści nie byli w stanie złamać.

Błąd 1 :Spacja między ENDIF . Powinno to być END IF .

Błąd 2 :Brak new.column z definicji wyzwalacza;

WŁAŚCIWA WERSJA :

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pokaż tylko najnowszą datę z połączonej tabeli MySQL

  2. MySQL Wyszukiwanie pełnotekstowe i SOUNDEX

  3. SQLAlchemy - Pobieranie listy tabel

  4. Co oznacza i robi MYSQLI_NUM?

  5. Potrzebuję mojej strony PHP, aby wyświetlić mój obraz BLOB z bazy danych mysql