Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > ID Identity


Автор: Diiana 9.1.2008, 14:28
Всем здрасте!Я использую Sql Server.ID Identity в таблице хочется обновить после того как закончил работать с таблицей.. чтобы оно сново начиналось с 1.Подскажите как это сделать.

Автор: Deniel_li 9.1.2008, 15:23
попробуй

DBCC CHECKIDENT (имя таблицы, RESEED, номер)

пример:
DBCC CHECKIDENT (mytable, RESEED, 1)

Автор: Diiana 9.1.2008, 15:39
Я записала запрос по примеру "DBCC CHECKIDENT (mytable, RESEED, 1)", но ничего не случилось, всё осталось по прежнему

Автор: Deniel_li 9.1.2008, 15:46
выполните 
select IDENT_CURRENT('table_name') 

какое значение получилось?

-----
проверил, должно получиться - значение поля identity устанавливается в 1 после
DBCC CHECKIDENT (mytable, RESEED, 1)


или я не правильно понял задачу?

Автор: Diiana 9.1.2008, 16:11
вот например у меня есть табличка с 2-мя полями, 1-ое ID,2-ое значение:
2 пар
3 арр
5 енк
6 екн
мне нужен запрос, который начинает опять id с 1:
1 пар
2 арр
3 енк
4 екн

Автор: under_sun 10.1.2008, 00:28
Можно сохранить записи во временную таблицу, удалить все записи из основной, сбросить идентити,  и вставить снова:
Код

SELECT * INTO Temp FROM MyTable
DELETE FROM MyTable

DBCC CHECKIDENT (mytable, RESEED, 0)
INSERT INTO MyTable SELECT val FROM Temp ORDER BY id
DROP TABLE Temp


Но думаю более целесообразно завести представление, где 3-ий столбец - это ранг строки по id:
Код

CREATE VIEW MyView  
AS
    SELECT *, rank() OVER ( ORDER BY id ) as rank
    FROM MyTable

и работать с ним.
Т.е. если в MyTable:
2 пар
3 арр
5 енк
6 екн
то в MyView будет:
2 пар 1
3 арр 2
5 енк 3
6 екн 4


 

Автор: Diiana 10.1.2008, 13:07
Спасибо всем большое за помощь,получилось как предложил  under_sun  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)