2016-06-29 3 views
-1

У меня есть таблица users с двумя полями id (числовой) и email (с полным адресом электронной почты), как добавить триггер, который может предотвратить добавление новых email записей с определенными доменами например: *@somedomain.com?Как создать MySQL триггер

+0

С помощью 'создать trigger' команду в MySQL (http://dev.mysql.com /doc/refman/5.7/en/create-trigger.html). – Shadow

+0

AFAIK трудно использовать триггер для блокировки вставки или обновления. Не могли бы вы отобразить эту проверку на своем уровне приложения? –

+1

@TimBiegeleisen не слишком сложно предотвратить вставку или обновление в триггере, подняв ошибку, но вы определенно должны указать, что это должно быть сделано в приложении, а не в триггере. – Shadow

ответ

0

Триггер будет выглядеть следующим образом:

DELIMITER $$ 

CREATE TRIGGER USER_INSERT BEFORE INSERT ON USER 
    FOR EACH ROW 
BEGIN 
    IF new.email like '%@somedomain.com' THEN 
    SIGNAL sqlstate '99999' 
     SET message_text = 'Invalid domain'; 
    END IF; 
END$$ 

DELIMITER ; 
0

Пожалуйста, попробуйте следующее:

DELIMITER $$ 

CREATE TRIGGER example_before_insert_reject_domains 
    BEFORE INSERT ON example_tbl FOR EACH ROW 
    BEGIN 
      IF NEW.email LIKE '%@somedomain.com' 
      THEN 
       SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = 'Cannot add or update row: invalid domain for email'; 
      END IF; 
    END; 
$$ 
Смежные вопросы