【发布时间】:2010-11-18 20:22:47
【问题描述】:
考虑以下 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()
我想知道我是否可以依赖插入到表 Foo 中的 1000 行具有连续的标识值。换句话说,如果这个 SQL 块产生的 @LastID 为 2000,我是否可以确定我插入的第一条记录的 ID 是 1001?我主要对同时将记录插入表 Foo 的多个语句感到好奇。
我知道我可以在我的插入语句周围添加一个可序列化的事务来确保我想要的行为,但我真的需要吗?我担心引入可序列化事务会降低性能,但如果 SQL Server 在此语句运行时不允许其他语句插入到表 Foo 中,那么我不必担心。
【问题讨论】:
标签: sql-server sql-server-2005