Проблемы параллелизма с последовательностью в MS SQL Server?

У меня есть последовательность в моей базе данных SQL Server

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

Я использую эту последовательность для таблицы (давайте назовем таблицу Users), которая имеет первичный ключ (назовите этот UserId), который не является столбцом IDENTITY. Я использую свою последовательность как DEFAULT для 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]

База данных используется двумя различными приложениями, где оба приложения могут вставлять данные в эту таблицу, используя упомянутую последовательность. Может ли это вызвать проблемы с параллелизмом? Может ли одно приложение получить UserId генерируется другим приложением - в случае одновременных запросов? если да, то как? и что я могу сделать, чтобы предотвратить? Я не могу сделать UserId IDENTITY,

Также, когда новая строка вставляется в таблицу, запускается триггер, который возвращает вновь сгенерированный UserId к одному из приложений. Это может быть проблематично?

0 ответов

Другие вопросы по тегам