触发-复制-触发,急!

comwin 2005-08-26 05:22:59
表largetable由于列数太多不能发布,因此将其分为两个小表small1和small2,并用触发器delete、insert、update保持largetable与samll1、small2的数据同步。
发布small1、small2,并强制订阅到订阅端的small1、small2上。
在订阅端的small1、small2同样加上触发器,使得small1、small2上的任何变化都能反映到订阅端上的largetable上。
最终效果是保持发布端的largetable与订阅端的largetable的数据同步。

现在问题是发布端上对small1、small2的delete、insert、update操作经过复制过程后并不一一对应的变成对订阅端上small1、small2的delete、insert、update操作,

所以订阅端上的触发器没按我们预期的那样去工作,

所以订阅端的small1、small2不能和订阅端上的largetable数据同步。


谁知道delete、insert、update操作是如何变化的?



订阅端的数据同步能否建立一个作业,二十分钟调用一次,内容是将small1、small2上的数据变化作用到largetable上。这个作业我不会写呀,谁教教我,提示一下,谢谢。
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGame 2005-09-01
  • 打赏
  • 举报
回复
高人~~~~
lovcal 2005-09-01
  • 打赏
  • 举报
回复
对于触发器,举例如下,这你可以看出是怎么触发的,你的功能应该可以实现
我也实现过在复制之后使用触发器来更新数据的

--insert插入
if not exists(select 1 from deleted)
begin
插入操作SQL
end

--update更新
if exists(select 1 from inserted) and exists(select 1 from deleted)
begin
修改操作SQL
end

--delete删除
if not exists(select 1 from inserted)
begin
删除操作SQL
end
lovcal 2005-09-01
  • 打赏
  • 举报
回复
怎么会不一样呢?
你是怎么细分两个表的?可否那个例子出看看
对于初始化的复制,你可以写个SQL脚本,让复制完成之后执行,那就可以把表重新合并啊
这个SQL脚本用来将两个字表合并为一个表,比较简单的操作
对于建立复制之后,在建立触发器,作用于两个子表,并更新在你的“大表上”,跟前面SQL脚本一样
wgsasd311 2005-08-26
  • 打赏
  • 举报
回复
学习:)
vivianfdlpw 2005-08-26
  • 打赏
  • 举报
回复
通过作业实现数据库同步
http://blog.csdn.net/zjcxc/archive/2003/12/29/20083.aspx

通过触发器实现数据库德即时同步
http://blog.csdn.net/zjcxc/archive/2003/12/29/20082.aspx
vivianfdlpw 2005-08-26
  • 打赏
  • 举报
回复
首先建立触发器的时候不要使用NOT FOR REPLICATION选项
如果复制过程正常,触发器没问题的话是会触发的

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧