Co můžete udělat, je implementovat spouštěče na vaše Users
a Team
tabulky, které se spouštějí při každém smazání řádků z obou:
Tabulka uživatelů:
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 ;
Tabulka týmu:
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 ;
Tyto spouštěče udělají pokaždé, když je záznam odstraněn z jedné z těchto tabulek, DELETE
operace se automaticky spustí na Playlists
pomocí id
který bude smazán (prostřednictvím vnitřního spojení).
Testoval jsem to a funguje to skvěle.