您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何解决SQL Server存储过程中的并发插入问题

如何解决SQL Server存储过程中的并发插入问题

尝试类似……

BEGIN TRY
  BEGIN TRANSACTION;
     DECLARE @iCount INT;

    IF EXISTS(SELECT 1 FROM Student WITH(UPDLOCK,HOLDLOCK) WHERE Id_Column = @iId)
    BEGIN

      select @iCount = ISNULL(max(Count_Column), 0) + 1 
      from Student WITH(UPDLOCK,HOLDLOCK) where Id_Column = @iId

         insert into Student
         values(@id, @iCount);
    END
  COMMIT TRANSACTION;
END TRY

BEGIN CATCH

 IF (@@TRANCOUNT <> 0)
     ROLLBACK TRANSACTION;

END CATCH

您实际上应该Identity在此处使用column来处理自动增量值。如果您使用的是sql server 2012或更高版本,则还有另一种选择也是使用Sequence Objectauto-increment。

SQLServer 2022/1/1 18:52:43 有280人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶