2014-01-23 96 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