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

Hvordan håndhæver man referentiel integritet på enkeltbordsarv?

Det du kan gøre er at implementere triggere på dine Users og Team tabeller, der udføres, når rækker bliver slettet fra enten:

Brugertabel:

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 ;

Tabel for hold:

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 ;

Hvad disse triggere vil gøre, er hver gang en post slettes fra en af ​​disse tabeller, en DELETE handlingen udføres automatisk på Playlists tabel ved hjælp af id der er ved at blive slettet (via en indre join).

Jeg har testet dette, og det fungerer godt.



  1. Fatal fejl:Kald til udefineret metode mysqli_stmt::fetch_array()

  2. Hvordan kan jeg ændre MariaDB til MySQL i XAMPP?

  3. Hvordan skriver jeg data fra R til PostgreSQL-tabeller med en autoinkrementerende primærnøgle?

  4. MariaDB Cluster Offline Installation til CentOS