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