SQL Server - 序列创建

时间:2016-12-08 20:45:50

标签: sql sql-server sql-server-2008-r2

这是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。

有任何建议要克服这个问题吗?

0 个答案:

没有答案