SQLREMOTE: неявный синхронизм подключенных объектов

dba.stackexchange https://dba.stackexchange.com/questions/68380

  •  11-12-2019
  •  | 
  •  

Вопрос

Я ищу лучший способ синхронизации внешних ключевых отношений с SQLREMOTE.Итак, например,Это две таблицы

CREATE TABLE  table1(
    id integer not null default autoincrement,
    name varchar(40) NOT NULL,
    primary key (id)
);


CREATE TABLE table_items(
    id integer NOT NULL default autoincrement,
    name CHAR(40) NOT NULL,
    table_1_id integer NOT NULL,
    cl1 bit default 0,
    cl2 bit default 0,
    FOREIGN KEY ( table_1_id )
    REFERENCES table_1( id ),
 PRIMARY KEY (id));
.

Реализация может быть, может быть, счет с выставленными фактами.CL1 и Cl2 должны вызвать, какой клиент должен быть этот набор наборе данных, с помощью синхронизации.Но теперь мне интересно, что является лучшим способом синхронизации также соответствующих данных Table_1.

Первый подход был бы из моего ума поставить также поля CL1 и Cl2 в table_1 и добавить их в pubcliation, поэтому публикация выглядит немного похоже на:

CREATE PUBLICATION sync_cl1 (
    TABLE table_1,
    TABLE table_items
    WHERE cl1 = 1
);

CREATE PUBLICATION sync_cl2 (
    TABLE table_1,
    TABLE table_items
    WHERE cl1 = 2
);
.

Есть ли лучший способ сделать это, может быть, со встроенной чековой целостности?

Это было полезно?

Решение

Кажется, что это может быть сделано с подзапрониками внутри публикаций.

из документации:

CREATE PUBLICATION SalesRepData (
TABLE SalesReps
TABLE Customers
   SUBSCRIBE BY rep_key
TABLE Contacts
SUBSCRIBE BY (SELECT rep_key
   FROM Customers
   WHERE Contacts.cust_key = Customers.cust_key )
);
.

Это будет ловить всех контактов клиентов для клиента продаж REP.

Тихое важное значение, кажется, что это необходимо обновить после обновления связи - E.g.Представитель продаж получает новых клиентов.Это должно быть сделано с AN перед триггером для обновления / вставки / удаления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top