Я не встречал очевидного способа отправлять уведомления на родительские таблицы, когда дочерние таблицы обновляются с помощью SQLDelight.
Вот диаграмма E / R, в общих чертах описывающая мою структуру:
![enter image description here](https://i.stack.imgur.com/Jl2Bq.png)
Что примерно соответствует следующей схеме базы данных:
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
вызвали необходимость повторного запроса.