将列标识上的标识设置为SQL Server 2005中的另一个表的列

时间:2013-11-28 21:01:07

标签: sql sql-server sql-server-2005 identity-column

我的TABLEA表格IDIDENTITY列。表TABLEA中插入的最后一条记录(例如1000作为该标识列值)。

我正在使用#temp作为ID列创建identity表。我需要为此身份设置种子,以便从TABLEA的{​​{1}}最后输入的身份值(在本例中为1001)继续。

我不想根据ID的{​​{1}}进行设置。请建议任何其他选择。

提前致谢。

注意:我使用的是SQL Server 2005。

max(ID)将无法实现,因为它需要管理员权限。

2 个答案:

答案 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 ...