日期:2014-05-18  浏览次数:20500 次

在调度中如何避免主键重复?
有一个调度每三分钟从源库取新数据加入到目标库,问题是前一个过程可能还在运行中,三分钟后,再次开始运行这个过程会导致主键重复的错误,如何解决?不能用延长时间的办法,因为一定要更新及时。

------解决方案--------------------
先判斷後插入
------解决方案--------------------
insert A库.dbo.A表
select * from A库.dbo.B表
where not exists(select 1 from A库.dbo.A表 where id=A库.dbo.B表.id)--id为主键
------解决方案--------------------
用形如
insert tablename(....)
select ... from srtablename
where ...
and not exists (
select 1 from tablename
where tablename.主键=srtablename.主键
)

的语句



------解决方案--------------------
为什么不用复制?
------解决方案--------------------
not in速度上可能会慢一些 :)