sql >> Database >  >> RDS >> Mysql

Hoe referentiële integriteit af te dwingen op Single Table Inheritance?

Wat u kunt doen, is triggers implementeren op uw Users en Team tabellen die worden uitgevoerd wanneer rijen worden verwijderd uit:

Gebruikerstabel:

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 ;

Teamtabel:

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 ;

Wat deze triggers doen, is dat elke keer dat een record wordt verwijderd uit een van deze tabellen, een DELETE bewerking wordt automatisch uitgevoerd op de Playlists tabel met de id die op het punt staat te worden verwijderd (via een inner join).

Ik heb dit getest en het werkt geweldig.



  1. WordPress opgestelde verklaring met IN() voorwaarde

  2. MySQL WHERE IN Query - ORDER BY Match

  3. een telling voor elke join - optimalisatie

  4. Vergelijk varchar met char