none
Replicar una tabla en otra mediante un trigger RRS feed

  • Pregunta

  • Buenas tardes, 

    Tengo dos tablas exactamente con los mismos campos (Tabla A y Tabla B). En la Tabla A tengo definido un trigger para que cada vez que se modifica algo, o se elimine un registro o se inserte se cambie también en la tabla B. El problema que tengo es que cualquier cambio en un campo de la Tabla A provoca que se actualicen TODOS los campos de la Tabla B y eso no es el funcionamiento que quiero. Lo que me gustaría saber es si se puede hacer mediante un trigger que cuando cambien un campo de la Tabla A se cambie EXCLUSIVAMENTE dicho campo en la Tabla B.

    El trigger lo tengo creado así: 

    FOR INSERT, UPDATE, DELETE AS BEGIN SET NOCOUNT ON  --Update  IF exists (select 1 from inserted) and exists (select 1 from deleted) BEGIN UPDATE Tabla_B SET Tabla_B.sys_215=i.sys_215,

    Tabla_B.codi_trb=i.codi_trb,

    Tabla_B.data_inici=i.data_inici,

    Tabla_B.data_final=i.data_final, . . . FROM Tabla_B join inserted i ON Tabla_B.sys_215=i.sys_215 RETURN END --Inserted  IF exists(select 1 from inserted) BEGIN INSERT INTO Tabla_B SELECT * FROM inserted END --Deleted IF exists(select 1 from deleted) BEGIN DELETE Tabla_B FROM  deleted d JOIN Tabla_B ON Tabla_B.sys_215 =d.sys_215 END  END 


    Gracias y saludos.

    martes, 9 de abril de 2019 17:50

Respuestas

  • Se puede, pero te costará un poco de esfuerzo porque tendrás que escribir uno por uno cada campo. Esencialmente se trata de poner un "IF UPDATE(campo)..." y dentro del "IF" metes la sentencia de actualización de ese campo en la otra tabla.
    martes, 9 de abril de 2019 18:03

Todas las respuestas