Sql server 提交前SQL事务中计数器变量的增量

Sql server 提交前SQL事务中计数器变量的增量,sql-server,transactions,Sql Server,Transactions,我正在使用SQL事务和内部事务,我需要一次性插入多条记录 但问题是我的身份不是身份。所以,我需要得到max id并插入它。 但当我得到最大值和增量+1时。它总是一样的 下面是我的代码 BEGIN DECLARE @maxId INT; SET @maxId = (SELECT MAX(id) FROM [dbo].[tempUser]); BEGIN TRAN BEGIN TRY INSERT INTO [dbo].[tempUser] (

我正在使用SQL事务和内部事务,我需要一次性插入多条记录

但问题是我的身份不是身份。所以,我需要得到max id并插入它。 但当我得到最大值和增量+1时。它总是一样的

下面是我的代码

BEGIN
 DECLARE @maxId INT;
 SET @maxId = (SELECT MAX(id) FROM [dbo].[tempUser]);
    BEGIN TRAN
         BEGIN TRY  


         INSERT INTO [dbo].[tempUser] (id, principal, first_name, last_name, email, isActive) 
         SELECT @maxId+1, A.User_Id, A.FirstName,A.LastName, 'ab@gmail.com', 1 FROM ADUser_Table A 
         LEFT JOIN [dbo].[tempUser] B on A.User_Id =B.principal where B.principal Is NULL


    COMMIT TRAN
        END TRY
        BEGIN CATCH 
            ROLLBACK TRAN
        END CATCH  
END

如何在sql事务中的每条记录中插入max id+1?

在插入时使用
行号
:-

BEGIN
 DECLARE @maxId INT;
 SET @maxId = (SELECT MAX(id) + 1 FROM [dbo].[tempUser]);
    BEGIN TRAN
         BEGIN TRY  


         INSERT INTO [dbo].[tempUser] (id, principal, first_name, last_name, email, isActive) 
         SELECT row_number() over(order by A.User_Id) + @i , A.User_Id, A.FirstName,A.LastName, 'ab@gmail.com', 1 FROM ADUser_Table A 
         LEFT JOIN [dbo].[tempUser] B on A.User_Id =B.principal where B.principal Is NULL


    COMMIT TRAN
        END TRY
        BEGIN CATCH 
            ROLLBACK TRAN
        END CATCH  
END

代替@maxid+1,您可以将@maxid与行号()相加,如下所示

SELECT @maxId+ (row_number()over(order by A.User_Id)) , A.User_Id,..
from [yourtable]