sql server同步数据库添加标识符 5C

我这边需要将一个数据库的数据采用job 定时同步到另外一个数据库,但是需要再另外一个数据库的记录加上标识符,比如说这条数据在原数据删除了则标识为delete,新增的则标志为new,有什么比较好的思路吗?请教各位大神!

2个回答

你可以把原数据库的主键id设置到新的数据库中,这样删除或者更新操作你可以知道原数据的id,然后把操作命名和id一同发到新的数据库,这样索引主键会很快

如楼上所讲,原数据库id设为主键,且id应为自增值。不清楚你所说两个数据库是不是在同一个服务器里,如果是,用触发器就可以了。
假设原库tb1,另一库tb2,标记字段是mark,删除标记'del',新增标记'new',另外更新的情况,我个人认为原数据设定为'del',新数据是'new',另一数据库id就应设为非聚集索引,你视自己实际的情况来定
create trigger trtb1 on tb1 for insert,update,delete as
if exists(select 0 from inserted) and exists(select 0 from deleted) begin update tb2 set mark='del' where id in(select id from deleted); insert into tb2 (...,mark)select ...,'new' from inserted end
if(insert)insert into tb2 (...,mark)select ...,'new' from inserted
if(delete)...

如果非得用job,新增、删除都可以操作:
insert into tb2 (...,mark)select ...,'new' from tb1 where id>(select max(id) from tb2)
update tb2 set mark='del' where id in(select id from tb2 where mark<>'del' except select id from tb1 where id<(select max(id) from tb2))
但更新的情况会棘手,以上是我的看法

lstmsa
lstmsa 上面一个地方说错了,另一数据库id就应设为非唯一索引,至于具体的类型视你更新有多频繁来定
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐