sql >> Databáze >  >> RDS >> Mysql

Jak vynutit referenční integritu u dědičnosti jedné tabulky?

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.



  1. DATEDIFF – Nahraďte NULL za NOW()

  2. Jak mapovat pole PostgreSQL pomocí Hibernate

  3. ORACLE Connect by klauzule ekvivalentní v SQL Server

  4. Neo4j - Import dat ze souboru CSV pomocí Cypher