Sql server 提交前SQL事务中计数器变量的增量
我正在使用SQL事务和内部事务,我需要一次性插入多条记录 但问题是我的身份不是身份。所以,我需要得到max id并插入它。 但当我得到最大值和增量+1时。它总是一样的 下面是我的代码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] (
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]