将TableA中的tableB与条件同步

时间:2016-06-30 02:50:20

标签: sql-server

我是sql server的新手,我有一个问题: (1)。我有tableB和tableA; (2)。我想tableB能够复制(同步)tableA中的所有列和条件(例如:collumn A1 ='PABL'); (3)。当tableA更新时,tableB 会自动更新。 (不是手动); (4)。我正在使用sql server 2008 r2。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

嗯,你应该做的第一件事是重新考虑你的数据库设计。将相同的数据保存在两个不同的地方通常表明设计不佳 如果你真的想要处理tableA中的一部分数据,就好像它存储在一个表中一样 - 那就是那些视图的用途。

如果无法重构数据库,则应在tableA上使用触发器进行更新,插入和删除,以更改tableB中的数据,以及是否需要同步。要成为双向的进程,您必须在tableB上执行相同操作,这将更改tableA上的数据。

示例触发器:

插入:

CREATE TRIGGER TR_tableA_INSERT ON tableA
    FOR INSERT
AS
BEGIN

    INSERT INTO TableB (<ColumnsList>)
    SELECT <ColumnsList>
    FROM Inserted
    WHERE inserted.columnA1 = 'PABL'

END

删除:

CREATE TRIGGER TR_tableA_DELETE ON tableA
    FOR DELETE
AS
BEGIN

    DELETE TableB
    FROM TableB 
    INNER JOIN Deleted ON <join condition>
    WHERE Deleted.columnA1 = 'PABL'

END

更新

CREATE TRIGGER TR_tableA_UPDATE ON tableA
    FOR UPDATE
AS
BEGIN

    UPDATE TableB
    FROM TableB 
    INNER JOIN Inserted ON <join condition>
    WHERE inserted.columnA1 = 'PABL'

END
相关问题