Sybase
SQLRemote:連接對象的隱式同步
我正在尋找將外鍵關係與 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 觸發器來完成。