Mysql
 sql >> Database >  >> RDS >> Mysql

Come applicare l'integrità referenziale sull'ereditarietà tabella singola?

Quello che puoi fare è implementare attivatori sui tuoi Users e Team tabelle che vengono eseguite ogni volta che le righe vengono eliminate da:

Tabella utenti:

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 ;

Tabella della squadra:

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 ;

Quello che faranno questi trigger è ogni volta che un record viene eliminato da una di queste tabelle, un DELETE l'operazione verrà eseguita automaticamente sulle Playlists tabella utilizzando l'id che sta per essere eliminato (tramite un inner join).

L'ho testato e funziona benissimo.