Рассмотрим следующий SQL:
CREATE TABLE Foo
(
ID int IDENTITY(1,1),
Data nvarchar(max)
)
INSERT INTO Foo (Data)
SELECT TOP 1000 Data
FROM SomeOtherTable
WHERE SomeColumn = @SomeParameter
DECLARE @LastID int
SET @LastID = SCOPE_IDENTITY()
Я хотел бы знать, могу ли я зависеть от 1000 строк, которые я вставил в таблицу Foo, имеющих смежные значения идентичности. Другими словами, если этот блок SQL создает @LastID 2000, могу ли я точно знать, что идентификатор первой вставленной мной записи был 1001? Мне в основном любопытно, когда несколько операторов вставляют записи в таблицу Foo одновременно.
Я знаю, что мог бы добавить сериализуемую транзакцию вокруг моего оператора вставки, чтобы обеспечить поведение, которое я хочу, но мне действительно нужно? Я обеспокоен тем, что введение сериализуемой транзакции снизит производительность, но если SQL Server не позволит другим операторам вставлять в таблицу Foo во время выполнения этого оператора, мне не нужно об этом беспокоиться.