android - SQLDelight - 修改子表时在父表上发出
问题描述
当使用 SQLDelight 更新子表时,我还没有遇到在父表上发出通知的明显方法。
这是一个 E/R 图,大致概述了我在玩的结构:
这大致转换为以下数据库模式:
R(ID)
S(ID, parentId)
T(S_ID, attribute)
这些.sq
文件:
-- com/package/R.sq
CREATE TABLE R (
ID Text PRIMARY KEY
);
-- com/package/S.sq
CREATE TABLE S (
ID Text PRIMARY KEY,
parentId TEXT REFERENCES R(ID) ON DELETE CASCADE
);
-- com/package/T.sq
CREATE TABLE T (
S_ID TEXT REFERENCES S(ID) ON DELETE CASCADE
attribute TEXT,
PRIMARY KEY(S_ID, attribute)
);
而我想要发生的是,当 T 的属性被更新时,SELECT *
通知 S(以及 R)上的查询,同样,当 S 的属性更新时,通知 R 上的查询。
有没有人遇到过使用 SQLDelight 执行此操作的方法?
在 SqlBrite 中,我可以在查询中指定一组触发器表,这样当修改任何触发器表时,查询将重新运行,并将结果集发送到下游。所以我可以将我的触发器表声明为R
, S
, 和T
onSELECT * FROM R
并修改为R
, S
, 或T
导致它被重新查询。
解决方案
这是 SQLDelight 中的一个错误。这是它的 github 问题:https ://github.com/cashapp/sqldelight/issues/1325
推荐阅读
- computer-vision - 了解pcl库的体素网格实现
- c - MacOS 上的 TensorFlow C 安装错误?:dyld 错误“未加载库:@rpath/libtensorflow.1.dylib”和“未找到符号:__cg_DGifCloseFile”
- python - .str.split() 是否有理由不适用于“$_”?
- javascript - 我把 filelist[i] 放到 ${},它变成了 undefined
- maven - 与 IntelliJ 捆绑的 Maven 不提供各种库的最新版本
- java - Socket.io 连接不适用于多个片段
- java - 当我使用 DaggerComponent.builder() 时,DaggerComponent 找不到符号方法 create()
- ios - 如何判断我的意图是否在快捷方式应用程序中运行?
- c# - 使用 EWS C# 检索未读电子邮件
- github - 如何显示“|” 在 github 的 .md 文件表中?