2013-07-25 224 views
0

下面是一個簡單示瑪:如何從子表中刪除從父表中刪除的行?

sqlite> .schema recordtypes 
CREATE TABLE recordtypes (record_id text primary key); 
sqlite> .schema headers 
CREATE TABLE headers (header_id text primary key); 
sqlite> .schema record_to_headers 
CREATE TABLE record_to_headers (id INTEGER, recordid TEXT, headerid TEXT, FOREIGN KEY(recordid) REFERENCES recordtypes(record_id), FOREIGN KEY(headerid) REFERENCES headers(header_id)); 

然後我將值插入recordtypes然後在record_to_headers

sqlite> insert into recordtypes values("test"); 
sqlite> insert into record_to_headers values (1, "test", "yeah"); 

然後我從recordtypes表中刪除「測試」期待它從record_to_headers表中刪除也但是,這種情況不會發生:

sqlite> delete from recordtypes where record_id = "test"; 
sqlite> select * from recordtypes; 
sqlite> select * from record_to_headers; 
1|test|yeah 

我需要行爲,如果我remov e表中recordtypes表中的值也從record_to_header表中刪除。請諮詢如何這樣做。非常感謝。

+1

創建一個刪除觸發器。請參閱http://www.sqlite.org/lang_createtrigger.html – Himanshu

回答

2

對SQLLite沒有多少經驗,但從documentation我可以看出,SQLLite支持外鍵級聯。當母行被刪除,將刪除該子行:

FOREIGN KEY(headerid) REFERENCES headers(header_id) ON DELETE CASCADE 

您應該諮詢文件,看看是否需要在事前SQLLite配置的東西。