Sybase

SQLRemote:連接對象的隱式同步

  • July 10, 2014

我正在尋找將外鍵關係與 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 )
);

這將擷取銷售代表客戶的所有客戶聯繫人。

似乎很重要的是,一旦更新了連接,就需要更新它——例如,銷售代表正在獲得新客戶。這需要使用 UPDATE/INSERT/DELETE 的 BEFORE 觸發器來完成。

引用自:https://dba.stackexchange.com/questions/68380