Pregunta

Estoy buscando la mejor manera de sincronizar las relaciones clave extranjeras con SQLREMOTE.Así que tener por ejemplo.estas dos tablas

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

Implementando tal vez una factura con los artículos de la factura.CL1 y CL2 desencadenar a qué cliente se sincronizará este conjunto de datos.Pero ahora me estoy preguntando, cuál es la mejor manera de sincronizar también los datos correspondientes de Table_1.

Un primer enfoque sería de mi mente para poner a CL1 y CL2 campos en Table_1 y agregarlos al pufcliation para que la publicación se vea poco como:

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

¿Hay alguna mejor manera de hacer esto tal vez con la verificación de integridad integrada?

¿Fue útil?

Solución

Parece que esto se puede hacer con subconsultas dentro de las publicaciones.

de la documentación:

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

Esto cogería todos los contactos de los clientes para el cliente del representante de ventas.

Es importante silencio, que esto debe actualizarse una vez que se haya actualizado la conexión, por ejemplo, por ejemplo.Un representante de ventas está recibiendo nuevos clientes.Esto debe hacerse con un disparador antes de actualizar / insertar / eliminar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top