任务:sqlsever中有表A,MySql中有表B。表A和表B结构一样但不在同一台机器上。要求实现当A中的数据有增删改操作时,在B中进行同样的操作(可以有时差)。
方案一(已实现):每天定时删除B表再把A表全部复制到A表。看到这个方案,不论从效率和用户体验上讲都很糟糕,因为数据量比较大有16W左右,但每天改变的就1k条左右。
方案二: 触发器+程序代码。 思路:在A表上间触发器,当触发时调用代码修改B表对应的数据。
方案三: 寻找成熟的数据库同步技术。求方案二的sql语句和方案三的相关资料数据库触发器数据同步用户体验
方案一(已实现):每天定时删除B表再把A表全部复制到A表。看到这个方案,不论从效率和用户体验上讲都很糟糕,因为数据量比较大有16W左右,但每天改变的就1k条左右。
方案二: 触发器+程序代码。 思路:在A表上间触发器,当触发时调用代码修改B表对应的数据。
方案三: 寻找成熟的数据库同步技术。求方案二的sql语句和方案三的相关资料数据库触发器数据同步用户体验
这个触发器在sqlserver中怎么写呢??
--在SQl SERVER中的触发器
if object_id('tr_test','tr')is not null
drop trigger tr_test
go
create trigger tr_test
on A表
for insert,update,delete
as
begin
/**
首先创建一张和A表一样的表,直接复制吧
复制语句:select * into temp_a表 from A表
把新表temp_a表中的数据删除:delete from temp_a表
**/
-- 如果插入数据,更新数据
insert into temp_a表
select * from inserted
-- 如果删除数据
insert into temp_a表
select * from deleted
end