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

Automaticky odstranit data křižovatky spolu s DELETE záznamu?

Deklarujte referenční akci:ON DELETE CASCADE, například:

CREATE TABLE user (
    user_id int PRIMARY KEY
);

CREATE TABLE offer (
    offer_id int PRIMARY KEY
);

CREATE TABLE user_offer (
    user_id int,
    offer_id int,
    PRIMARY KEY (user_id, offer_id),
    FOREIGN KEY (user_id) REFERENCES user (user_id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES offer (offer_id) ON DELETE CASCADE
);

[SQL Fiddle]

Je zajímavé, že se zdá, že zadání referenční akce v "zkrácené" syntaxi cizího klíče nefunguje (potvrzeno pod MySQL 5.5.30, 5.6.6 m9). Následující se analyzuje, ale když user je odstraněn, odpovídající user_offer nesmaže se:

CREATE TABLE user_offer (
    user_id int REFERENCES user (user_id) ON DELETE CASCADE,
    offer_id int REFERENCES offer (offer_id) ON DELETE CASCADE,
    PRIMARY KEY (user_id, offer_id)
);


  1. Jak napsat regex lookahead/lookbehind v mysql

  2. Jak mohu sloučit sloupce ze dvou tabulek do jednoho výstupu?

  3. MySQL:Kdy jsou skutečně potřebná oprávnění Flush v MySQL?

  4. Cizí klíč Sequelize.js