2013-11-28 72 views
1

我有一個表TABLEAID作爲IDENTITY列。插入表TABLEA中的最後一條記錄攜帶(如1000作爲標識列值)。將列標識上的標識設置爲SQL Server 2005中另一個表的列

我正在創建一個#temp表,其中ID表爲identity列。我需要爲此標識設置種子,以繼續從TABLEAID最後輸入的標識值(在本例中爲1001)。

我不想根據TABLEAmax(ID)設置。請建議任何其他選項。

在此先感謝。

注:我使用SQL Server 2005的

DBCC RESEED,因爲它需要管理員權限將是不可能的。

回答

0

創建一個臨時表中設置標識插入ON爲先插入要做的第一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 
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 ... 
相關問題