2016-05-13 17 views
1

Ich habe über die Implementierung eines Benutzerregistrierungssystems nachgedacht. Wo wird 'Benutzer' und 'user_activation' Tabellen sein.MySQL Fremdbedingung löschen bei boolescher Änderung

wenn meine Tabellen sah wie folgt aus: Tabelle -> Felder:

users -> id,username,activated(boolean), etc. 

user_activation -> users_id (foreign key constraint obviously),token, etc. 

Nun kann ich die Token-Daten aus ‚user_activation‘ Kaskade löschen, wenn ein Benutzer von ‚Benutzer‘ gestrichen Tabelle.

Ich habe mich gefragt, wie würde ich das gleiche erreichen, wenn der ‚aktiviert‘ boolean Wert in Tabelle ‚users‘ würde ‚true‘ gesetzt werden?

(Sobald ein Benutzer aktiviert ist, wäre das Token nutzlos, also sollte es gelöscht werden, sobald der Benutzer aktiviert ist).

Antwort

1

Ich kann nicht denken Sie an einem Weg, dies mit einem Fremdschlüssel zu tun, aber man kann einen Trigger verwenden:

delimiter // 

CREATE TRIGGER user_activation_tr 
BEFORE UPDATE ON users 
FOR EACH ROW 
BEGIN 
    IF NEW.activated THEN 
     DELETE FROM user_activation WHERE users_id = NEW.id; 
    END IF; 
END;// 

delimiter ;