2016-06-29 4 views
-1

Ich habe Tabelle users mit zwei Feldern id (numerisch) und email (mit vollständiger E-Mail-Adresse), wie Trigger hinzuzufügen, die verhindern können, das Hinzufügen neue email Datensätze mit bestimmten Domains zB zu schaffen?Wie MySQL Trigger

+0

Durch die Verwendung der 'trigger' Befehl in MySQL erstellen (http://dev.mysql.com /doc/refman/5.7/de/create-trigger.html). – Shadow

+0

AFAIK ist es schwierig, einen Auslöser zu verwenden, um einen Einsatz oder ein Update zu blockieren. Könnten Sie diesen Check in Ihrer App-Ebene durchführen? –

+1

@TimBiegeleisen es ist nicht schwer, eine Einfügung oder Aktualisierung in einem Trigger zu verhindern, indem ein Fehler ausgelöst wird, aber Sie haben definitiv einen Punkt, dass dies in der Anwendung und nicht in einem Trigger getan werden sollte. – Shadow

Antwort

0

Der Auslöser würde wie folgt aussehen:

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

Bitte versuchen Sie dies:

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; 
$$