Zadeklaruj akcję referencyjną:PRZY USUWANIU KASKADY, na przykład:
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
);
Co ciekawe, wydaje się, że określenie akcji referencyjnej w „skróconej” składni klucza obcego nie działa (potwierdzone w MySQL 5.5.30, 5.6.6 m9). Poniższe jest analizowane, ale gdy user
zostanie usunięty, odpowiednia user_offer
nie zostanie usunięty:
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)
);