Android:SQLite数据库复制一个用于虚拟使用的条目

时间:2013-10-11 02:47:49

标签: android sqlite

我有一个类,一个包含People类型对象的数据库。我想实现一个Groups功能,将某些People放入某个Groups。但是,当我从一个组中删除一个人时,我只是希望将该人从组中删除,而不是完全删除。

无论如何,SQLite将Person的“副本”提供给类,如虚拟,当你删除它时,它不会从整个应用程序中删除,只是从组中删除?

或者我应该以完全不同的方式实现这一点。例如,我提出的一个想法如下:有很多People这就是为什么我使用数据库但是不会有很多Groups所以也许我可以使用ArrayList 1 {} ArrayList s。也就是说,有一个groups的arraylist,每个group都有People的arraylist属于该组。这样,您可以随意删除arraylist中的条目。

2 个答案:

答案 0 :(得分:1)

我的建议是在桌面上包含所有People对象类型。添加一列以表示他们属于哪个组(例如,将列命名为GroupNumber)。如果您需要将其从群组中删除,只需根据需要清除GroupNumber列。这样,您可以从组中删除它们,但不从数据库中删除它们。

答案 1 :(得分:0)

您还有另一种选择,允许同一个人可能属于不同的群组。

SQLite有VIEWTRIGGER ... INSTEAD OF DELETE,这可能对您有用。

想象一下这个架构:

CREATE TABLE People(pid, Name);
CREATE TABLE Groups(gid, Name);
CREATE TABLE PeopleGroup(gid, pid);
CREATE VIEW PeopleInGroups
    SELECT People.*, Groups.* FROM People
    JOIN PeopleGroups ON PeopleGroups.pid=People.pid
    JOIN Groups ON PeopleGroups.gid=Group.gid;
CREATE TRIGGER pigd INSTEAD OF DELETE ON PeopleInGroups BEGIN
    DELETE FROM PeopleGroup WHERE pid=OLD.pid AND gid=OLD.gid;
    END;

当你这样做时

 SELECT * FROM PeopleInGroups;

您将获得所有分配了小组的人。

然后你也可以

DELETE FROM PeopleInGroups WHERE pid=123;

将执行触发器并简单地从所有组中删除此人。