Question

Je cherche la meilleure façon de synchroniser les relations clés étrangères avec Sqlremote.Donc, avoir par exempleces deux tables

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));

Mise en œuvre peut-être une facture avec des éléments de facturation.CL1 et CL2 déclenchent quel client doit conserver cet ensemble de données de synchronisation.Mais maintenant je me demande, quelle est la meilleure façon de synchroniser les données correspondantes de la table_1.

Une première approche serait de mon esprit à mettre également des champs CL1 et CL2 dans TABLE_1 et les ajoutez à la pubcLiation afin que la publication soit peu importante:

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
);

Y a-t-il un meilleur moyen de le faire peut-être avec une vérification intégrée de l'intégrité?

Était-ce utile?

La solution

Il semble que cela puisse être fait avec des sous-requêtes dans des publications.

de la documentation:

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 )
);

Cela attirerait tous les contacts clients du client de Repro Rep.

Calme important semble être, que cela doit être mis à jour une fois la connexion mise à jour - par exemple.Un représentant des ventes reçoit de nouveaux clients.Cela doit être fait avec un déclencheur avant la mise à jour / insertion / Supprimer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top