SQL SERVER 自增长列有大量数据并发插入时,好像会报索引冲突的情况,求高人解释,并给一个解决方法

解决方案 »

  1.   

    如果是触发器实现,在实现的地方加个tablelock
      

  2.   

    Key violation.
    违反了 PRIMARY KEY 约束 'PK__*****'。不能在对象 '*******' 中插入重复键。
      

  3.   


    这个是违反主键约束,仔细检查一下插入数据的主键列上的值是否有重复。可以使用 sql profile 跟踪一下。
      

  4.   

    遇到过类似情况,多张表同时向一张表插入数据时,如果多张表存在主键列,而各表的主键列为自增的,那么同时向一张表插入数据时,会报这个错。因为多张表的主键列在同时插入数据的情况下可能存在重复的,而一张表的主键列是不允许有重复的,当插入重复数据时,会报此错。
    解决方法:
    假设多张表为:a,b,c
    a,b,c表的主键列保证依次递增,当a表数据到100完成时,b表自增列最小值应改为101,依次到c表,
    可用触发器实现,当a表完成数据录入,自动修改b表自增列为a表最大值加1,依次进行。
    这样确保了多张表的数据不会重复,再往一张表插数据时就不会再报此错了。