Foreign-Key
SQLITE:引用多個表級聯刪除的多個外鍵
在 SQLite 中,我想刪除父表行,它必須刪除所有相關的子表。我已經完成了 StackExchange 和其他網站中的所有問題,但我的查詢沒有得到滿意的結果。
我有四張桌子。
TableA: id, primary key name TableB: id, primary key issues, tb_aid, #foreign key ref to TableA id tb_cid, #foreign key ref to TableC id tb_did, #foreign key ref to TableD id tb_eid, #foreign key ref to TableE id TableC: id, primary key column1, tb_bid, #foreign key ref to TABLE B id TableD: id, name TableE id, name
我試過
JOIN
但不幸的是它不能在 SQLite 中工作。我不知道怎麼用TRIGGER
。是否可以在上述情況下使用 ONCASCADE DELETE
。
您可以在級聯刪除上使用
例子
打開 FK 支持
PRAGMA foreign_keys = ON
創建樣本數據
CREATE TABLE TableA ( id INTEGER primary key , name varchar ); CREATE TABLE TableC ( id INTEGER primary key, name varchar ); CREATE TABLE TableB ( id INTEGER primary key, issues varchar, tb_aid INTEGER, tb_cid INTEGER , CONSTRAINT fk_TBLC FOREIGN KEY (tb_cid) REFERENCES TableC(id) ON DELETE CASCADE, CONSTRAINT fk_TBLA FOREIGN KEY (tb_aid) REFERENCES TableA(id) ON DELETE CASCADE ); INSERT INTO TableA(id,name) VALUES(1,'test'); INSERT INTO TableC(id,name) VALUES(1,'test'); INSERT INTO TableB(id,issues,tb_aid,tb_cid) VALUES(1,'test',1,1);
從 TableA 中刪除值
DELETE FROM TableA where id = 1;
從表 B 中選擇
SELECT * FROM TableB;
結果
id 問題 tb_aid tb_cid
您的範例中確實有雙向 FK,雖然我認為這不是一個好的設計,但您可以使用下面的 DB Fiddle 之類的東西。