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

Откуда: Москва
Сообщений: 1014
Добрый день.
Вопрос:
Насколько вероятно после удаления объекта базы данных и создания его заново, повторение уже использеванного когда либо ранне в этой базе номера объекта?
И каков механизм генерирования номеров объектов для этого Microsoft юзает?
25 май 05, 14:54    [1570328]     Ответить | Цитировать Сообщить модератору
 Re: Генерирование номера объекта в базе данных.  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Вы имеете в виду id из sysobjects?
25 май 05, 14:56    [1570335]     Ответить | Цитировать Сообщить модератору
 Re: Генерирование номера объекта в базе данных.  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
делать мне нечего
но вот что попробовал
use tempdb
declare @i int
create table tt(i int identity(1,1),id int)
set @i=0
while @i<10000
begin
create table t(i int)
insert into tt select object_id('t')
drop table t
set @i=@i+1
end
drop table tt
а потом
select t1.*,t2.*,t2.id-t1.id from tt t1
 join tt t2 on t2.i=t1.i+1
получили интересный результат
пусть curr_id - это то, что присвоится новому объекту
тогда следующий считается по правилу
if (curr_id+16000057)>=2^31
curr_id=curr_id-2131483591
else
curr_id=curr_id+16000057
самый первый curr_id в нулёвой базе может быть какой то такой
2^31-2131483591-1
о, ща проверю...
ещё, как оказалось
2^31-2131483591 = 16000057
ну ладно
не очень понятно с чего начинается
после двух раз создания таблицы получался одинаковый номер(357576312)
ну это не суть важно
но явно математика есть в подборе чисел для уменьшения времени, через которое номера начнут повторятся, конец дня, чего то и не думается даже
вот такая вот ерунда
ЗЫ
только всё таки не очень понятно, зачем так сделано, почему бы не просто по одному прибавлять
25 май 05, 17:33    [1570796]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить