我在 MySQL 中有以下 2 個表:
CREATE TABLE event (
id int NOT NULL,
title varchar(255) NOT NULL,
alias varchar(20) NOT NULL,
PRIMARY KEY (id, alias),
FOREIGN KEY (alias) REFERENCES user(alias) ON DELETE CASCADE
);
CREATE TABLE assistance (
alias_second varchar(20) NOT NULL,
id int NOT NULL,
alias_main varchar(20) NOT NULL,
PRIMARY KEY (alias_second, id, alias_main),
FOREIGN KEY (alias_second) REFERENCES user(alias) ON DELETE CASCADE,
FOREIGN KEY (id) REFERENCES event(id) ON DELETE CASCADE,
FOREIGN KEY (alias_main) REFERENCES event(alias) ON DELETE CASCADE
);
我在最后一張表中有以下模擬值:
| alias_second | id | alias_main |
| ------------ | ------ | ---------- |
| Jack | 1 | Alex |
| John | 1 | Alex |
| Jack | 2 | Alex |
我不明白為什么如果我執行以下陳述句:DELETE FROM event WHERE id = 1 AND alias = 'Alex';Assistance 表的第三行也('Jack', 2, 'Alex')被洗掉。因此,如果有人能向我解釋為什么會發生這種情況以及如何解決它,我將不勝感激。
uj5u.com熱心網友回復:
我懷疑您可能正在尋找復合外鍵,而不是您創建的兩個單獨的外鍵。
嘗試改變 -
FOREIGN KEY (id) REFERENCES event(id) ON DELETE CASCADE,
FOREIGN KEY (alias_main) REFERENCES event(alias) ON DELETE CASCADE
FOREIGN KEY (`id`,`alias_main`) REFERENCES event(`id`,`alias`) ON DELETE CASCADE
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411042.html
標籤:
上一篇:嘗試僅從必須匹配特定列的所有值的表中回傳不同的ID條目
下一篇:不同但不是真的
