用Insert批量添加时报错,因为表中设置了主键。
但是Insert中有重复的  所以报错,但是一报错后面的就添加不了了。
怎么让添加时如果主键已经存在了 就不添加,也不报错?

解决方案 »

  1.   

    把你要插入的数据写到临时表
    然后leftjoin现在的表 看看主键字段是不是null 
    如果是null说明不存在 然后再insert就行了
      

  2.   

    两种方法可解决,方法一比较好些:
    1 改造 INSERT 语句,先查询是否存在,如果不存在才插入:
      if not exists ( select ... ) insert ...
    2 截取主键冲突的异常,忽略它:for (int i = 0; i < 1000; i++)
    {
        try
        {
            //插入一条数据
        }
        catch (System.Data.SqlClient.SqlException ex)
        {
            System.Data.SqlClient.SqlException sqlex = ex as System.Data.SqlClient.SqlException;
            if (sqlex.Number != 2627)
                throw;
        }
    }
      

  3.   

    isnert into table(id) values (select max(id)+ 1 from table) 
    避免插入重复主键