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,它是主键,第二个表使用相同的表.
正如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)
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |