关键字:
触发器,数据同步,增量同步、人大金仓、KingbaseES
概述
触发器是数据库中的一种特殊类型的存储过程,它在特定的数据库事件(例如插入、更新、删除操作)发生时自动执行。触发器通常与表关联,并且在表的数据发生变化时触发执行。触发器可以用于实现复杂的业务逻辑,例如数据验证、记录日志等。它们还可以用于维护数据库的一致性和完整性,例如在插入或更新数据时检查数据的有效性。总之,触发器是一种非常实用的工具,可以帮助开发人员更好地管理和维护数据库,本文将介绍一种基础触发器实现数据库增量同步的方案。
基于触发器和中间表的增量同步方案
- 确定数据来源表(源端)作为抽取表
- 定义暂存抽取表变化记录主键(关键列)的中间表
- 定义针对抽取表数据发生变化规则的触发器
- 探测抽取抽取表是否有数据变化,建立的触发器将变化数据的主键(关键列)捕获到中间表
- 编写程序实现对中间表的不断扫描,根据中间表的变化,对目标表进行相应的处理
- 定时删除中间表已处理过的临时数据
实现细节:假设现有源表A,目标表B,A表数据发生变化后,会通过触发器将发生变化的记录的主键值写入到中间表,中间表只有两个字段(中间表的主键,在A表发生变化记录的主键)temp(id int primary key auto_increment , A_id int),程序通过对中间表的扫描,把B表出现的与临时表中A_id匹配的字段在B表中移除,接下来,程序通过从中间表的到的id去源表中扫描,得到该记录的最新值并将其插入到目标表中。
Insert触发器:触发器会把A表新插入记录的主键记录到中间表,程序按照中间表的记录对目标表进行移除,由于目标表不存在该条记录,所以移除这一步骤不会产生影响,随后程序通过中间表中记录的Id在源表找到匹配的记录,将其插入到目标表。
Update触发器:触发器会把A表更新记录的主键记录到中间表,程序按照中间表的记录对目标表进行移除,随后程序通过中间表中记录的Id在源表找到匹配的记录,将其插入到目标表。
Delete触发器:触发器会把A表删除记录的主键记录到中间表,程序按照中间表的记录对目标表进行移除,随后程序通过中间表中记录的Id在源表找到匹配的记录,由于源表这时已将这条记录删除,所以不会找到与之匹配的记录,所以最后对目标表插入的操作不会执行。




