A数据库表A。Forder_number+forder_line_numer联合主键
B数据库表B,与A数据库的表A完全一样,但B数据库表的是与B应用系统关联的。
A数据库表的表A,是与A应用系统关联的。
AB两个应用系统的forder_number+forder_line_number分别与各之系统关联,但A数据库表中的这些信息要来源于B数据库的表B。
当在A数据库查询分析器执行:
insert into a
select * from b..b b
where b.FOrder_Number+b.Forder_Line_Number not in 
  (select FOrder_Number+Forder_Line_Number from a)
时,出现“违反了 PRIMARY KEY 约束 'PK_Int_Sales_Orders'。不能在对象 'Int_Sales_Orders' 中插入重复键。”错误。

解决方案 »

  1.   

    你的b.FOrder_Number和b.Forder_Line_Number是数字吧?所以这句where b.FOrder_Number+b.Forder_Line_Number not in (select FOrder_Number+Forder_Line_Number from a)的结果是不对的,肯定出来主键冲突啦。应该写成:
    insert into a 
    select * from b..b b 
    where not exists (select 1 from a where a.FOrder_Number=b.FOrder_Number and a.Forder_Line_Number=b.Forder_Line_Number)还有,先select一下结果看看对不对才做insert,上面提供的方法肯定把数据搞乱。