我的TABLEA
表格ID
为IDENTITY
列。表TABLEA
中插入的最后一条记录(例如1000作为该标识列值)。
我正在使用#temp
作为ID
列创建identity
表。我需要为此身份设置种子,以便从TABLEA
的{{1}}最后输入的身份值(在本例中为1001)继续。
我不想根据ID
的{{1}}进行设置。请建议任何其他选择。
提前致谢。
注意:我使用的是SQL Server 2005。
max(ID)
将无法实现,因为它需要管理员权限。
答案 0 :(得分:0)
为第一个插入创建一个临时表SET IDENTITY INSERT ON执行第一个INSERT,然后设置ID IDENTITY INSERT OFF然后其他插入,你的种子将从那里开始像这样......
CREATE TABLE #Temp (ID INT IDENTITY(1,1), Column1 CHAR(1));
GO
SET IDENTITY_INSERT #Temp ON;
INSERT INTO #Temp (ID, Column1)
VALUES (1000, 'A');
SET IDENTITY_INSERT #Temp OFF;
INSERT INTO #Temp ( Column1)
VALUES ( 'B');
SELECT * FROM #Temp
结果集
ID Column1
1000 A
1001 B
答案 1 :(得分:0)
您可以使用ROW_NUMBER()
生成#Temp
表格的值:
INSERT INTO dbo.TableA ...
DECLARE @LastID INT;
SET @LastID = SCOPE_IDENTITTY();
CREATE TABLE #Temp
(
Col1 INT PRIMARY KEY,
Col2 VARCHAR(10)
);
INSERT #Temp ...
SELECT @LastID + ROW_NUMBER() OVER(ORDER BY @@SPID), ...
FROM ...