Những gì bạn có thể làm là triển khai trình kích hoạt trên Users
của bạn và Team
bảng thực thi bất cứ khi nào các hàng bị xóa khỏi:
Bảng người dùng:
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 ;
Bảng nhóm:
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 ;
Những gì các trình kích hoạt này sẽ làm là mỗi khi một bản ghi bị xóa khỏi một trong các bảng này, DELETE
hoạt động sẽ tự động thực thi trên Playlists
bảng sử dụng id
sắp bị xóa (thông qua liên kết bên trong).
Tôi đã thử nghiệm điều này và nó hoạt động rất tốt.