Domanda

Sto cercando il modo migliore per sincronizzare le relazioni chiave straniere con SQLRemote.Quindi avere ad es.Questo due tavoli

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

Implementazione Forse una fattura con gli elementi della fattura.CL1 e CL2 Triggerranno quale cliente deve essere sincronizzato con questo set di dati.Ma ora mi chiedo, qual è il modo migliore per sincronizzare anche i dati corrispondenti della Table_1.

Un primo approccio sarebbe dalla mia mente per mettere anche i campi CL1 e CL2 in table_1 e aggiungili al pubcltion in modo che la pubblicazione sia piccola come:

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

C'è un modo migliore a fare questo forse con controllo integrato integrato?

È stato utile?

Soluzione

Sembra che questo possa essere fatto con i sottostivi all'interno delle pubblicazioni.

Dalla documentazione:

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

Ciò prenderebbe tutti i contatti del cliente per il cliente del Rep di vendita.

Tranquillo importante sembra essere, che questo deve essere aggiornato una volta che la connessione è stata aggiornata - E.G.Un rappresentante di vendita ottiene nuovi clienti.Questo deve essere fatto con un trigger prima dell'aggiornamento / inserto / cancellazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top