2014-01-23 36 views
2

我在sqlite中有兩個表,它們與一個id「連接」。使用此表的應用程序正在Android OS上運行。如何在sqlite中使用外鍵?

表1 ;:

|id| entry 1| entry2| 
|1 | aaaaaa | aaaaa | 
|2 | bbbbbb | bbbbb | 

表2:

|id| entryx| constant| 
|1 | aaaaa | aaaaaaaa| 
|1 | baaaa | baaaaaaa| 
|1 | caaaa | caaaaaaa| 
|2 | ababa | baabaaba| 

目前,我刪除條目,用下面的查詢,通過使用一個循環:

do{ 
    db.delete("Table 1","id='"+cid+"'",null); 
    db.delete("Table 2","id='"+cid+"'",null); 
    } 
while(getNextID()); 

我想使用外鍵,它允許我刪除表1中的條目,而表2中的所有條目也被刪除。此外,我必須考慮表1中的數據插入到表2中之前。如何使用外鍵來完成此操作?該表使用id作爲整數,它是主鍵,第二個表使用相同。

+1

http://www.sqlite.org/foreignkeys.html後在表2'ID整數參考表1(id)ON DELETE CASCADE' – Selvin

回答

5

由於selvin建議上刪除級聯

http://www.sqlite.org/foreignkeys.html

表1

CREATE TABLE table1 (
    id PRIMARY KEY 
,entry1 text,entry2 text 
); 

然後

insert into table1 values(1,"aaaa","aaaaa"); 
insert into table1 values(2,"bbbb","bbbbb"); 

表2

使用進入

sqlite> select * from table1; 
id   entry1  entry2  
---------- ---------- ---------- 
1   aaaa  aaaaa  
2   bbbb  bbbbb  
sqlite> select * from table2; 
id   entryx  constant 
---------- ---------- ---------- 
1   aaaa  aaaaa  
1   baaaa  baaaaaaa 
1   caaaa  caaaaaaa 
2   bbbb  bbbbb 

後個

數據表中刪除

sqlite> delete from table1 where id=1; 

表刪除

sqlite> select * from table2; 
id   entryx  constant 
---------- ---------- ---------- 
2   bbbb  bbbbb  


sqlite> select * from table1; 
id   entry1  entry2  
---------- ---------- ---------- 
2   bbbb  bbbbb 
+0

很好解釋! – Meet