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 上将触发器表声明为 RST,并修改 RST 导致 re-queried.

这是 SQLDelight 中的错误。这是它的 github 问题:https://github.com/cashapp/sqldelight/issues/1325