SQLRemote:接続されたオブジェクトの暗黙の同期
-
11-12-2019 - |
質問
外国のキーリレーションをSQLRemoteと同期させるための最良の方法を探しています。だからe.を持つ。この2つの表
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 )
);
.
これは営業担当者の顧客のためのすべての顧客連絡先を捕まえるでしょう。
静かな重要なことは、接続が更新されたら更新する必要があることがわかります。営業担当者は新しい顧客を取得しています。これは、更新/挿入/削除のための前のトリガーで行う必要があります。
所属していません dba.stackexchange