SymmetricDS: маршрутизатор ко всему или конкретному узлу - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть таблица со столбцом, указывающим синхронизацию со всем или конкретным узлом, данные будут, например, «ВСЕ» или «001».

Однако одна и та же запись может быть сконфигурирована с "ALL" или "001", запись "ALL" может перезаписывать мою запись "001" ...

Как я могу указать в sym router, чтобы я направлял запись "ALL" на узел, если записи "001" не существует?

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

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

Эта команда проверит, соответствует ли целевой узел записям external_id или значение external_id равно ALL, и проверит, чтобы убедиться, что в таблице нет других записей с идентификатором узла.

c.external_id = :ROUTE_TO 
    OR (:ROUTE_TO = 'ALL' AND c.external_id NOT IN (
            select distinct route_to from my_table where route_to = :ROUTE_TO
        )
    )

Я все еще чувствую, что чего-то не хватает. Это какой-то тип таблицы параметров? Если это так, вы можете изменить внутренний выбор, чтобы убедиться, что вы не смотрите на полную таблицу, а только на записи, которые соответствуют параметру имя_параметра.

0 голосов
/ 28 апреля 2018

допустим, ваша таблица - "my_table", а столбец маршрутизации - "route_to". установите для столбца запроса подвыбора sym_router значение

c.external_id in (select distinct sn.external_id
from sym_node sn
where (sn.external_id = :ROUTE_TO or ‘ALL’ = :ROUTE_TO))
...