Автоматическая проблема приращения - PullRequest
0 голосов
/ 05 февраля 2011

Использование SQL Server

Table1

ID Name

001 Raja
002 Ravi
003 Suresh
004 Kamal
...

Мне нужно создать новую таблицу и задать идентификационные данные для каждого столбца

Пробный запрос

insert into table2 
  select * from table1

Ожидаемый результат

S.No ID Name

1 001 Raja
2 002 Ravi
3 003 Suresh
4 004 Kamal
...

Я создаю новую таблицу и сделал столбец S.No идентификатором в таблице.Он создает идентификационный номер для каждой строки, затем я удаляю всю строку, снова вставленную, но идентификационная запись создается из последней строки, начиная со следующего номера.

Пример

S.No ID Name

    1 001 Raja
    2 002 Ravi
    3 003 Suresh
    4 004 Kamal
    ...

Удалить всестроки, снова я вставил.

S.No ID Name

    5 001 Raja
    6 002 Ravi
    7 003 Suresh
    8 004 Kamal
    ...

Ожидаемый результат

Идентификация должна начинаться с номера 1 и далее, когда я удаляю все строки из таблицы.

Нужна помощь по запросу

Ответы [ 3 ]

4 голосов
/ 05 февраля 2011

Это не так, как работает личность. Удаление материала не приведет к сбросу поля идентичности. Вы должны повторно посеять это:

DBCC CHECKIDENT ( ‘databasename.dbo.yourtable’,RESEED, 0) -- will start from 1
2 голосов
/ 05 февраля 2011

Или просто укоротить таблицу? Это также сбросит первичный ключ.
(marc_s: на самом деле это значение IDENTITY , которое сбрасывается)

TRUNCATE TABLE tablename
0 голосов
/ 05 февраля 2011

Если вы хотите, чтобы столбец S.No имел автоинкремент, и это значение имеет (максимум № 1),

, чтобы вы могли создать скалярную функцию, чтобы найти это значение и установить для столбца DefaultValue эту функцию и установить для identity значение false .

Посмотрите этот образец:

CREATE FUNCTION [dbo].[getmaxno]()
RETURNS int
AS
BEGIN
    DECLARE @ResultVar int
    SELECT @ResultVar = MAX(no)+1 from dbo.table_1
    RETURN @ResultVar
END

ALTER TABLE [dbo].[Table_1] ADD  CONSTRAINT [DF_Table_1_no]  DEFAULT ([dbo].[getmaxno]()) FOR [no]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...