我是sql server的新手,我有一个问题: (1)。我有tableB和tableA; (2)。我想tableB能够复制(同步)tableA中的所有列和条件(例如:collumn A1 ='PABL'); (3)。当tableA更新时,tableB 会自动更新。 (不是手动); (4)。我正在使用sql server 2008 r2。
我该怎么办?
答案 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