SQLDelight - излучение на родительские таблицы при изменении дочерних таблиц - PullRequest
0 голосов
/ 04 марта 2020

Я не встречал очевидного способа отправлять уведомления на родительские таблицы, когда дочерние таблицы обновляются с помощью SQLDelight.

Вот диаграмма E / R, в общих чертах описывающая мою структуру:

enter image description here

Что примерно соответствует следующей схеме базы данных:

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 для SELECT * FROM R, а изменения R, S или T вызвали необходимость повторного запроса.

...