SQLDelight - 修改子表时在父表上发出
SQLDelight - Emit on Parent Tables when Child Tables are Modified
当使用 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 中,我可以在查询中指定一组触发器表,这样当任何这些触发器表被修改时,查询都是 re-run 并且结果集被发送到下游。因此,我可以在 SELECT * FROM R
上将触发器表声明为 R
、S
和 T
,并修改 R
、S
或 T
导致 re-queried.
这是 SQLDelight 中的错误。这是它的 github 问题:https://github.com/cashapp/sqldelight/issues/1325
当使用 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 中,我可以在查询中指定一组触发器表,这样当任何这些触发器表被修改时,查询都是 re-run 并且结果集被发送到下游。因此,我可以在 SELECT * FROM R
上将触发器表声明为 R
、S
和 T
,并修改 R
、S
或 T
导致 re-queried.
这是 SQLDelight 中的错误。这是它的 github 问题:https://github.com/cashapp/sqldelight/issues/1325