Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment appliquer l'intégrité référentielle sur l'héritage de table unique ?

Ce que vous pouvez faire, c'est implémenter des déclencheurs sur vos Users et Team tables qui s'exécutent chaque fois que des lignes sont supprimées de :

Tableau des utilisateurs :

DELIMITER $$
CREATE TRIGGER user_playlist_delete 
BEFORE DELETE ON User FOR EACH ROW
BEGIN
    DELETE a FROM Playlist a
    INNER JOIN UserPlaylist b ON a.id = b.id AND b.userId = OLD.id;
END$$
DELIMITER ;

Tableau d'équipe :

DELIMITER $$
CREATE TRIGGER team_playlist_delete 
BEFORE DELETE ON Team FOR EACH ROW
BEGIN
    DELETE a FROM Playlist a
    INNER JOIN TeamPlaylist b ON a.id = b.id AND b.teamId = OLD.id;
END$$
DELIMITER ;

Ce que ces déclencheurs feront, c'est qu'à chaque fois qu'un enregistrement est supprimé de l'une de ces tables, un DELETE l'opération s'exécutera automatiquement sur les Playlists table en utilisant l'id qui est sur le point d'être supprimé (via une jointure interne).

J'ai testé cela et cela fonctionne très bien.