Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erzwinge ich die referenzielle Integrität bei der Vererbung einzelner Tabellen?

Was Sie tun können, ist, Trigger für Ihre Users zu implementieren und Team Tabellen, die ausgeführt werden, wenn Zeilen gelöscht werden, entweder aus:

Benutzertabelle:

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 ;

Teamtabelle:

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 ;

Was diese Trigger tun, ist jedes Mal, wenn ein Datensatz aus einer dieser Tabellen gelöscht wird, ein DELETE Der Vorgang wird automatisch auf den Playlists ausgeführt Tabelle mit der id das gerade gelöscht wird (über einen inneren Join).

Ich habe dies getestet und es funktioniert großartig.