2013-11-28 3 views
1

У меня есть таблица TABLEA с ID как столбец IDENTITY. Последняя запись, вставленная в таблицу TABLEA, переносит (скажем, 1000 как значение столбца идентификатора).Установить идентификатор идентификатора столбца в столбец другой таблицы в SQL Server 2005

Я создаю таблицу #temp с ID как колонку identity. Мне нужно установить семя для этого идентификатора, чтобы продолжить с TABLEAID последнее введенное значение идентификации (в данном случае 1001).

Я не хочу устанавливать это на основе max(ID) из TABLEA. Пожалуйста, предложите любой другой альтернативный вариант.

Заранее спасибо.

Примечание: Я использую SQL Server 2005.

DBCC RESEED будет невозможно, поскольку это требует права администратора.

ответ

0

Создать Temp Таблица SET IDENTITY INSERT ON для первой вставки сделать первый INSERT затем SET 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 

Результат Set

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