Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Перенумерация столбца identity  [new]
diwww
Member

Откуда:
Сообщений: 425
В таблице есть столбец identity, с помощью которого задается сквозная нумерация записей из таблицы. После удаления записей из таблицы в нумерации появляются "дырки". Как можно принудительно перенумеровать столбец типа identity или, что еще лучше, сделать чтобы стлобец сам перенумеровывался после удаления записей?
14 май 05, 11:47    [1539573]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
identity предназначен не для задач нумерации записей вовсе
14 май 05, 11:51    [1539593]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
diwww
Member

Откуда:
Сообщений: 425
Smirnov Anton
identity предназначен не для задач нумерации записей вовсе

а как тогда сделать столбец со сквозной нумераций записей таблицы?
14 май 05, 11:52    [1539601]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
BusyMan
Member

Откуда: Москва
Сообщений: 4927
Без дырок чтоли?
14 май 05, 11:54    [1539622]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
diwww
Member

Откуда:
Сообщений: 425
BusyMan
Без дырок чтоли?

Чтобы была сквозная нумерация строк
Например, если в таблице были строки
1 ааа
2 ббб
3 ввв
4 ггг
то после удаления строки 3 автоматически должен перенумероваться первый столбец:
1 ааа
2 ббб
3 ггг
14 май 05, 11:58    [1539644]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Можно, например, FAQ почитать.
14 май 05, 12:01    [1539657]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
@ndrey
Member

Откуда: Novosibirsk
Сообщений: 343
create table #tt (i int identity,a int, b money)
insert into #tt (a,b) values (1,2)
insert into #tt (a,b) values (1,4)
insert into #tt (a,b) values (10,72)
insert into #tt (a,b) values (51,62)
go
delete from #tt where i=1
go
alter table #tt drop column i 
go
alter table #tt add i int identity
go
select * from #tt
go
drop table #tt
За порядок не ручаюсь :^)
Точнее порядок будет потерян.....
14 май 05, 12:02    [1539662]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
Идентификация записи и нумерация это разные сущности, нужна нумерация сделая поле Numeration
14 май 05, 12:05    [1539682]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
diwww
Member

Откуда:
Сообщений: 425
tpg
Можно, например, FAQ почитать.


Как это делать я знаю :)

Можно, как вариант, установить SET IDENTITY_INSERT ON и сделать, например, тригер для перенумеровывания IDENTITY-столбца после удаления записи.
Но у меня большое подозрение что для этого есть какой-то стандартный способ/свойство, с помощью которого будет работать все правильнее и быстрее. (Т.е. столбец будет сам перенумеровываться)
Т.к. задача эта, имхо, довольно часто стоит перед разработчиками
14 май 05, 12:08    [1539688]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
diwww
Member

Откуда:
Сообщений: 425
Anatoly Podgoretsky
Идентификация записи и нумерация это разные сущности, нужна нумерация сделая поле Numeration

Согласен, сущности разные... вот хочется узнать как сделать нумерацию
А что такое Numeration? в BOL ничего такого не нашел
14 май 05, 12:21    [1539752]     Ответить | Цитировать Сообщить модератору
 Re: Перенумерация столбца identity  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
diwww
Согласен, сущности разные... вот хочется узнать как сделать нумерацию
А что такое Numeration? в BOL ничего такого не нашел

Просто имя поля, отражающее его сущность. Если будешь делать поле нумерация, зачем только оно нужно, то могу посоветовать один из вариантов решения - завести табличку свободных номеров и повторно их использовать, если же конечно нужна хронологическая последовательность, то данный метод не подойдет.
14 май 05, 13:22    [1540019]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить