日期:2014-05-17  浏览次数:20535 次

Sql 两表同步更新问题
表1
ID NAME  TEL  MAIL     C1  C2  C3   C4 .....
1  XX     123     M3MM.COM
2   XX     113     M1MM.COM
3  XX     6123     M6MM.COM
4  XX     133     MM4M.COM
5  XX     43     MM5M.COM

表2
ID NAME  TEL  MAIL     C1  C2  C3   C4 .....
1  XX     123     M3MM.COM
2   XX     113     M1MM.COM
3  XX     6123     M6MM.COM
4  XX     133     MM4M.COM
5  XX     43     MM5M.COM

实现:表2同步表1的数据。
现在已经实现了 删除和插入。  更新有什么简单方法实现? 比如表1 第3条数据的  TEL更改了。同步的时候需要更新表2.  还要要求速度。数据量很大。总不能全部更新一遍吧
这只是简单的。真是表中有很多很多列。
SQL两表同步;SQL同步更新;

------解决方案--------------------
方法1,用复制工具进行同步,复制类型选事务.

方法2,在表1上建update触发器,

create trigger tr_表1 on 表1 
for update
as
begin
 update b
  set b.[NAME]=a.[NAME],
      b.[TEL]=a.[TEL],
      b.[MAIL]=a.[MAIL],
      b.[C1]=a.[C1],
      b.[C2]=a.[C2],
      b.[C3]=a.[C3],
      b.[C4]=a.[C4]
  from inserted a
  inner join 表2 b on a.ID=b.ID
end

------解决方案--------------------
触发器控制灵活,是一种较好的选择。缺点是会影响数据更新速度。
------解决方案--------------------
引用:
项目需求不是时时同步。所以不能用触发器。 需求是每天执行SQL语句来同步。数据很大。每条都更新一遍有点不太现实

用复制工具进行同步,复制类型选事务型(只同步差异部分),设定期执行同步.