如何在sqlite中使用外键?

Irg*_*ter 2 sqlite android foreign-keys android-sqlite

我在sqlite中有两个表,它们与一个id"连接".使用此表的应用程序在Android OS上运行.

表格1;:

|id| entry 1| entry2|
|1 | aaaaaa | aaaaa |
|2 | bbbbbb | bbbbb |
Run Code Online (Sandbox Code Playgroud)

表2:

|id| entryx| constant|
|1 | aaaaa | aaaaaaaa|
|1 | baaaa | baaaaaaa|
|1 | caaaa | caaaaaaa|
|2 | ababa | baabaaba|
Run Code Online (Sandbox Code Playgroud)

目前,我使用循环删除带有以下查询的条目:

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

我想使用外键,它允许我删除表1中的条目,并且表2中的所有条目也被删除.此外,我必须考虑表2中的数据在插入表2之前插入.如何使用外键来执行此操作?该表使用id作为int,它是主键,第二个表使用相同的表.

Rag*_*dan 5

正如selvin建议在删除级联上使用

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

表格1

CREATE TABLE table1 (
  id PRIMARY KEY  
 ,entry1 text,entry2 text
);
Run Code Online (Sandbox Code Playgroud)

然后

insert into table1 values(1,"aaaa","aaaaa");
insert into table1 values(2,"bbbb","bbbbb");
Run Code Online (Sandbox Code Playgroud)

表2

CREATE TABLE table2(
  id int references table1(id) ON DELETE CASCADE, entryx text, constant text
);


insert into table2 values(1,"aaaa","aaaaa");
insert into table2 values(1," baaaa ","baaaaaaa");
insert into table2 values(1,"  caaaa ","caaaaaaa")
insert into table2 values(2,"bbbb","bbbbb"); 
Run Code Online (Sandbox Code Playgroud)

入境后的表格

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  
Run Code Online (Sandbox Code Playgroud)

删除

sqlite> delete from table1 where id=1;
Run Code Online (Sandbox Code Playgroud)

删除后的表

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


sqlite> select * from table1;
id          entry1      entry2    
----------  ----------  ----------
2           bbbb        bbbbb  
Run Code Online (Sandbox Code Playgroud)