set @iMaxid=(select isnull(max(id)+1,1) from mytable with(tablockx))

解决方案 »

  1.   

    create proc test
      @cValue char(10)
    as 
    declare @iMaxid int
    begin tran
    --1
    set @iMaxid=(select isnull(max(id)+1,1) from mytable with(tablockx) )
    --2
    insert mytable values(@iMaxid,@cValue)
    ----------
    commitmytable with(tablockx) 这个锁将保持到事务结束. 如果没有事务, 这个锁到--2时就没了.
      

  2.   

    Thanks 
    分是一定给的!
    还能讲讲关于锁的操作吗?或者哪里可以找到这方面的详细资料?
      

  3.   

    我手边有本<Microsoft SQL Server 7.0 技术内幕>, 我觉得它说的不错.
      

  4.   

    好久没见你了,既然被我碰上了,就再问一个问题吧!
    create proc A as
    select 'nononono' as you
    如果我想在别外一个存储过程中调用上面这个过程,并且要取得它的结果,该如何做?
    create proc b 
    @you char(10)
    as
    .......