尝试类似……
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 Object
auto-increment。