在c#中执行多行sql语句,如:declare @nid char(20)
while 1=1 begin
  set @nid = .......(省略)
  delete * from table1 where id = @nid
  insert into table1 values(@nid)
  if (select top 1 id from table1 where id = @nid) = @nid
    break
end
select @nid这段sql语句本意是想在table1中插入一个唯一的行,但是多个用户可能同时插入这行,如果插入不成功(重复)就循环重新设置其它id插入。
可是在c#中执行的时候,当遇到重复的时候就直接退出来并出错了,能不能让sqlserver去处理这个异常(循环),而c#忽略它?
多谢多谢

解决方案 »

  1.   

    在c#中写一个方法判断你要插入的数据是否重复,不重复就插入,重复就设置新的ID插入,这样应该可以吧!
      

  2.   

    declare @nid char(20) createid:
      set @nid = .......(省略)   if exists(select * from table1 where id=@nid)
      begin
        goto createid
      end
      else
      begin
      insert into table1 values(@nid) 
      endselect @nid 
      

  3.   

    两种恐怕都不行,假如在判断后的第一时间有别人插入,就会有问题了,我觉得只有让sql自己来管理才行,我把我的语句段放在SQL查询分析器就可行正常执行