Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL:АКО има OR условие и REGEXP съвпадат

Най-накрая получих окончателната и правилна версия на тригера след отстраняване на грешки на много възможности и копаене на 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - Превъртане през всеки ред от таблица в MySQL?

  2. Кукичките не се задействат при вмъкване на необработени заявки чрез sequelize.query()

  3. Проблем при настройката на модула MySQLdb

  4. PERIOD_ADD() Примери – MySQL

  5. mysql_data_seek еквивалент на pdo