这是SQL Server 2008 R2数据库。
我们的要求是,程序应该在我的表中插入唯一的序列,并且插入的值应该返回到输出。
我大部分时间没有任何问题。
但是在最罕见的情况下,当程序被不同的线程同时调用时(只差几毫秒),我们得到相同的值(重复)。
我的程序:
ALTER PROCEDURE [dbo].[GetNewID]
AS
BEGIN
DECLARE @NEWSEQVALUE INT
DECLARE @INSERTEDROWS AS TABLE (NewID INT)
SET NOCOUNT ON
INSERT INTO NewID
OUTPUT INSERTED.NewID INTO @INSERTEDROWS VALUES ('A', GETDATE())
SELECT @NEWSEQVALUE = NewID
FROM @INSERTEDROWS
RETURN @NEWSEQVALUE
END
我的表格定义:
CREATE TABLE [dbo].[NewID ]
(
[NewID] [int] IDENTITY(1000000,1) NOT NULL,
[SeqVal] [varchar](1) NULL,
[Createdate] [datetime] NULL
) ON [PRIMARY]
我们使用的SQL Server版本是 - SQL Server 2008 R2 SP3。
有任何建议要克服这个问题吗?