Проблемы параллелизма с последовательностью в MS SQL Server? - PullRequest
0 голосов
/ 12 октября 2018

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

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

Я использую эту последовательность в таблице (давайте назовем таблицу Users), которая имеет первичный ключ (позволяет назвать этот UserId), который не являетсястолбец IDENTITY.Я использую свою последовательность в качестве ПО УМОЛЧАНИЮ для 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 одному из приложений.Это может быть проблематично?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...