Проблемы параллелизма с последовательностью в 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
к одному из приложений. Это может быть проблематично?