触发器在增量同步数据的运用.
来源:互联网 发布:网络架构师工作时间 编辑:程序博客网 时间:2024/04/28 01:06
触发器可以记录对表的添加,修改,删除,
这样可以通过触发器,记录一段时间内的表的变动的记录,把这些记录存到一个变动记录表里,
数据同步的时候,就可以读取这张变成的记录表,只需要同步变动过的记录,这样可以大大提高同步的速度.
对原表删除的操作,可以能新表做DELETE操作
对原表进行Insert 或Update操作,可以执行新建或更新操作.
下面是一个触发器(SQL SERVER 2000)的例子:
1if exists (select * from dbo.sysobjects where id = object_id(N'[risk].[TRG_GUARANTEE_R_IN_HG]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
2drop trigger [risk].[TRG_GUARANTEE_R_IN_HG]
3if exists (select * from dbo.sysobjects where id = object_id(N'[risk].[TRG_GUARANTEE_R_DEL_HG]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
4drop trigger [risk].[TRG_GUARANTEE_R_DEL_HG]
5CREATE TRIGGER TRG_GUARANTEE_R_IN_HG
6ON GUARANTEE_R
7FOR INSERT,UPDATE
8AS
9UPDATE A SET ARJ_MARK='M',CREATE_TIME=GETDATE(),USING_FLAG='0000000000'
10 FROM LOG_ENTRY_INC2 A INNER JOIN INSERTED B ON A.ENTRY_ID = B.ENTRY_ID
11 INSERT INTO LOG_ENTRY_INC2(ENTRY_ID,ARJ_MARK,CREATE_TIME,USING_FLAG)
12 SELECT ENTRY_ID,'M',GETDATE(),'0000000000'
13 FROM INSERTED where ENTRY_ID NOT IN (SELECT ENTRY_ID FROM LOG_ENTRY_INC2)
14CREATE TRIGGER TRG_GUARANTEE_R_DEL_HG
15ON GUARANTEE_R
16FOR DELETE
17AS
18UPDATE A SET ARJ_MARK='D',CREATE_TIME=GETDATE(),USING_FLAG='0000000000'
19 FROM LOG_ENTRY_INC2 A INNER JOIN INSERTED B ON A.ENTRY_ID = B.ENTRY_ID
20INSERT INTO LOG_ENTRY_INC2(ENTRY_ID,ARJ_MARK,CREATE_TIME,USING_FLAG)
21 SELECT ENTRY_ID,'D',GETDATE(),'0000000000'
22 FROM DELETED where ENTRY_ID NOT IN (SELECT ENTRY_ID FROM LOG_ENTRY_INC2)
2drop trigger [risk].[TRG_GUARANTEE_R_IN_HG]
3if exists (select * from dbo.sysobjects where id = object_id(N'[risk].[TRG_GUARANTEE_R_DEL_HG]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
4drop trigger [risk].[TRG_GUARANTEE_R_DEL_HG]
5CREATE TRIGGER TRG_GUARANTEE_R_IN_HG
6ON GUARANTEE_R
7FOR INSERT,UPDATE
8AS
9UPDATE A SET ARJ_MARK='M',CREATE_TIME=GETDATE(),USING_FLAG='0000000000'
10 FROM LOG_ENTRY_INC2 A INNER JOIN INSERTED B ON A.ENTRY_ID = B.ENTRY_ID
11 INSERT INTO LOG_ENTRY_INC2(ENTRY_ID,ARJ_MARK,CREATE_TIME,USING_FLAG)
12 SELECT ENTRY_ID,'M',GETDATE(),'0000000000'
13 FROM INSERTED where ENTRY_ID NOT IN (SELECT ENTRY_ID FROM LOG_ENTRY_INC2)
14CREATE TRIGGER TRG_GUARANTEE_R_DEL_HG
15ON GUARANTEE_R
16FOR DELETE
17AS
18UPDATE A SET ARJ_MARK='D',CREATE_TIME=GETDATE(),USING_FLAG='0000000000'
19 FROM LOG_ENTRY_INC2 A INNER JOIN INSERTED B ON A.ENTRY_ID = B.ENTRY_ID
20INSERT INTO LOG_ENTRY_INC2(ENTRY_ID,ARJ_MARK,CREATE_TIME,USING_FLAG)
21 SELECT ENTRY_ID,'D',GETDATE(),'0000000000'
22 FROM DELETED where ENTRY_ID NOT IN (SELECT ENTRY_ID FROM LOG_ENTRY_INC2)
另外需要说明的:
触发器没有updated,更新时,旧数据是deleted,新数据是inserted
- 触发器在增量同步数据的运用.
- 触发器在增量同步数据的运用.
- 增量同步数据
- 创建Writable Materialized View在DB之间增量同步数据
- 在两个ORACLE数据库之间实现数据增量同步
- Oracle 触发器数据同步
- 基于MYSQL的Binlog增量数据同步服务
- 数据库触发器的运用
- 数据库增量同步(二台SQL Server服务器的数据库之间增量传输数据)(jaime原创)
- 浅析Oracle存储过程触发器在数据同步中的应用
- 简单的两个表数据同步的触发器
- 利用触发器实现数据同步
- 利用触发器实现数据同步
- 增量式的创建触发器 增删改
- Oracle数据库触发器实现数据的备份和同步
- Redis数据增量同步优化可行性分析
- 大数据增量同步实现方案
- MySQL数据同步的一个很初级运用
- 项目经理与客户沟通的宜与忌
- 第11章 对象的集合
- 流行病毒temp1.exe、temp2.exe解决方法。
- PHP的bbs实现之三
- 中间表同步方案(全量,增量)
- 触发器在增量同步数据的运用.
- 如何制作网页中的ICO
- 读一读Scktsrvr.exe的源程序
- 什么是SID
- 解决浏览器Background标签的TD属性不被支持
- Windows蓝屏画面错误代码说明一览表
- 《PHP&MORE》 第七期发布
- 软件项目的需求开发与管理
- 关于鼠标右键的限制