0

我的 SQL Server 数据库中有一个序列

CREATE SEQUENCE [dbo].[UserPKSequence] 
AS [int]
START WITH 1
INCREMENT BY 1
MINVALUE -2147483648
MAXVALUE 2147483647
NO CACHE 
GO

我在具有不是 IDENTITY 列的主键(让我们命名该 UserId)的表(让我们命名表用户)上使用此序列。我使用我的序列作为 UserId 的默认值,如下所示:

CREATE TABLE [dbo].[Users]
(
    [UserId] [INT] NOT NULL 
         CONSTRAINT [DF_User_UserId] DEFAULT (NEXT VALUE FOR [UserPKSequence]),
    [Email] [VARCHAR](254) NULL
    -- other columns defined for the table

    CONSTRAINT [pkUsers] 
        PRIMARY KEY CLUSTERED ([UserId] ASC)
) ON [PRIMARY]

该数据库由 2 个不同的应用程序使用,两个应用程序都可以使用上述顺序将数据插入到该表中。它会导致任何并发问题吗?UserId如果并发请求,一个应用程序可以获取另一个应用程序生成的数据吗?如果是,那么如何?我能做些什么来预防?我做不到UserId IDENTITY

此外,当在表中插入新行时,会触发一个触发器,将新生成的行返回UserId给其中一个应用程序。会不会有问题?

4

0 回答 0