日期:2014-05-17  浏览次数:20548 次

表数据重复
本帖最后由 jkshu 于 2013-09-04 11:48:37 编辑
在服务器上写了个存储过程,定时执行这个存储过程,偶尔情况下a表中会得到重复数据,请大家帮忙看看。
a、b表结构完全一样。
BEGIN TRAN
  insert into a select * from b
  if(@@error<>0) 
  BEGIN
      ROLLBACK TRAN
      RETURN
  END
  TRUNCATE TABLE b
  if(@@error<>0)
  BEGIN
      ROLLBACK TRAN
      RETURN
  END
COMMIT TRAN

------解决方案--------------------
解决方法是A表中设置一个主键 然后插入的时候用语句
insert into a select * from b where not exists(select 1 from a where a.主键=b.关联字段)

------解决方案--------------------
try this,

BEGIN TRAN
  insert into a select distinct * from b
  if(@@error<>0) 
  BEGIN
      ROLLBACK TRAN
      RETURN
  END
  TRUNCATE TABLE b
  if(@@error<>0)
  BEGIN
      ROLLBACK TRAN
      RETURN
  END
COMMIT TRAN