因为要同时更新两个表即 往表a中添加记录时 表a中的当前记录的流水号 要同时添加到表 b 中 ,所以 往表a 中添加记录时 要先读出最大的流水号(varchar(16)) 并 加1作为当前的流水号用.net 怎样保持流水号唯一呢 ?

解决方案 »

  1.   

    用你上面的方法就可以,或者你用一个SQL Server的一种数据类型叫做identifer吧,每次你new 一个新的id就可以
      

  2.   

    或者你用.NET下面的GUID类,他可以保证产生全球唯一的ID号码,用法如下:
    Guid.NewGuid
      

  3.   

    Guid.NewGuid().ToString()
    他跟SQL Server里面的identifier数据类型是一致的
    或者你用SQL Server里面的timestamp也可以。
      

  4.   

    System.Guid.NewGuid().ToString()
      

  5.   

    .net 中是怎么lock 的?
      

  6.   

    select from with xlock,paglock
      

  7.   

    使用存储过程,在一个过程中解决你的问题。
    最大的流水号要能够转化成int型,自己先制定编号规则,这个应该不是什么问题。
    请看create procedure NumAdd
    (
         @r nvarchar(10) output  --输入输出r的值
    )
    as
    --declare @r nvarchar(10)
    declare @temp nvarchar(10)
    declare @r2 nvarchar(10)  
    --set @r='R0000010'
    --select @r--前面加1方便转换成int型
    set @temp = '1'+substring(@r,2,len(@r)-1)
    --select @temp
    --add 1
    set @temp=cast(@temp As int)+1--还原
    set @r='R'+substring(@temp,2,len(@temp)-1)
    --select @r
      

  8.   

    GUID没有重复的,你不用担心,
    搞一个自增列,转成16位,不足前面补零
      

  9.   

    Guid.NewGuid().ToString()
    全球唯一号
      

  10.   

    呵呵咋不用newid,我郁闷。你自己写个自动序号就可以了
      

  11.   

    我一直用的是Guid.NewGuid().ToString()