如何解决如何有效地计算有房间的子实体?
我的应用中包含这些实体:
@Entity(tableName = "parents")
data class Parent(
@PrimaryKey
val name: String = "",val numberOfChildren: Int = 0
)
@Entity(tableName = "children")
data class Children(
@PrimaryKey
val parentName: String = "",val name: String = ""
)
我想更新numberOfChildren
以计算每个父母有多少个孩子。
最初,我考虑过获取孩子,先计数然后插入到父母那里,然后再插入数据库,但是在我看来,很多数据库调用效率很低。
计算孩子数量(基于父母的姓名)并更新numberOfChildren
字段的最佳/有效方法是什么?
解决方法
我认为最好的方法是创建触发器,该触发器将自动更新子级中插入/删除行的父表中的数据
如何从sqlitetutorial.net创建触发器的示例
CREATE TRIGGER [IF NOT EXISTS] trigger_name
[BEFORE|AFTER|INSTEAD OF] [INSERT|UPDATE|DELETE]
ON table_name
[WHEN condition]
BEGIN
statements;
END;
所以您创建2个触发器(一个用于插入,另一个用于删除)将是这样
create trigger if not exists CHILDREN_COUNT_TRIGGER
after insert on children
begin
update parents set numberOfChildren = (select count(*) from children where parentName = NEW.parentName) where name = NEW.parentName
end;
与删除相同,但将NEW更改为OLD
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。