新手刚接触SQLServer问一下,下列代码中在多用户情况下在Update和Insert之间会不会产生冲突(新手不知道怎么说,就是打麻将中截和的意思),另外不知道SQL的运行机理,感觉这段代码效率不是太高, 高手给指点一下,多谢了.Create Procedure InsA
@CName nvarchar(10),
@Priority int,
@AutoID int OutPut
As
DECLARE @Rows int
Set @Rows = @@ROWCOUNT;
IF @Priority = 0 OR @Priority > @Rows
Set @Priority = @Rows;
UPDATE tblA Set Priority = Priority + 1 Where Priority >= @Priority;
INSERT INTO tblA([CName],[Priority]) VALUES (@CName,@Priority);
SET @AutoID = @@IDENTITY 

解决方案 »

  1.   

    不会的,执行完update之后,才会执行insert。还有就是,好像我没记错的话,
    他们执行时,都没真正的改变表,到结束时,才会真正的。commit。
      

  2.   

    哦,多谢诸位了,我的意思是当执行Update后还没有执行Insert前,别人能不能对这个表进行操作(打个时间差),感觉不会,好像是个"事务"问题. 另外有谁能帮忙分析一下效率问题, 提一点建议,再次感谢诸位了