2016-05-13 1 views
1

Je pensais à implémenter un système d'enregistrement d'utilisateur. Où sera 'utilisateurs' et 'user_activation' tables.Contrainte étrangère MySQL delete on boolean change

si mes tableaux ressemblaient à ceci: table -> Champs:

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

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

Maintenant, je peux cascade supprimer les données de jeton de 'user_activation' si est supprimé un utilisateur de 'utilisateurs' tableau.

Je me demandais comment pourrais-je obtenir le même lorsque le « activé » valeur booléenne dans « utilisateurs » table serait réglé sur « true »? (Une fois qu'un utilisateur est activé, le jeton serait inutile, donc il devrait être supprimé une fois que l'utilisateur est activé).

Répondre

1

Je ne peux pas penser à une façon de le faire avec une clé étrangère, mais vous pouvez utiliser un déclencheur:

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 ;