Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.13;
Скачать: CL | DM;

Вниз

Генератор уникального значения   Найти похожие ветки 

 
Ш-К   (2005-01-13 15:09) [0]

Как в MSSQL сгенирировать уникальный 4-х байтный идентификатор. Генератор общий на всю базу.


 
Stanislav ©   (2005-01-13 15:17) [1]

А Identy зачем или GUID ?


 
sniknik ©   (2005-01-13 15:18) [2]

сделай автоинкремент в левой таблице, при любом добавлеии в базу добавляй и туда, потом получившийся автоинкремент используй как это уникальное значение. (попробуй это в тригере реализовать, тогда не нужно будет заботится при каждой записи)


 
sniknik ©   (2005-01-13 15:21) [3]

Stanislav ©   (13.01.05 15:17) [1]
так первое не "сквозное" на всю базу а второе 16 байт. ;о))

а Ш-К явно в MSSQL с IB/или клона перебрался, у них мозги по другому повернуты, с их отличной от других системой генераторов. ;о)).


 
Ш-К   (2005-01-13 15:30) [4]

sniknik ©   (13.01.05 15:18) [2]
Каждая тр. на вставку будет блокировать таблицу. В тормоза жуткие выльеца. Не говоря о дидлоках.

sniknik ©   (13.01.05 15:21) [3]
Да перебрался.)


 
Ega23 ©   (2005-01-13 15:33) [5]

Каждая тр. на вставку будет блокировать таблицу. В тормоза жуткие выльеца. Не говоря о дидлоках.

Ничего не выльется. Хочешь уникальности - на тебе Identity. Не хочешь -
Declare @X int Select @X=Max(ID)+1 from Table1
Insert into Table1 (ID) Values (@X)


 
Polevi ©   (2005-01-13 15:39) [6]

CREATE PROCEDURE GETID @Id INT OUT AS
UPDATE SEEDS SET ID=ID+@How, @Id=ID
GO


 
Ш-К   (2005-01-13 15:49) [7]

Ega23 ©   (13.01.05 15:33) [5]
А когда много клиентов?

Polevi ©   (13.01.05 15:39) [6]
Такое не оттранслируется.

All
А ели брать чексум то GUID? Так не проще будет? Где больше подводных камней?


 
Ega23 ©   (2005-01-13 15:57) [8]

А когда много клиентов?

Ну и что? Много - это сколько?


 
Ш-К   (2005-01-13 16:03) [9]

Ega23 ©   (13.01.05 15:57) [8]
Два юзера будут делать вставку в Table1 одновременно.


 
Ega23 ©   (2005-01-13 16:09) [10]

Два юзера будут делать вставку в Table1 одновременно.
На одной таблице не могут 2 транзакции одновременно пройти. Они встанут в очередь. Так что сначала один, а потом - второй. Ну а если identity - вааще по барабану, сервер сам всё отследит.


 
Ш-К   (2005-01-13 16:24) [11]

Ega23 ©   (13.01.05 16:09) [10]

Генератор общий на всю базу.
Не на одну таблицу.
В итоге все транзакции на вставку по всем таблицам (где я юзаю идентификатор) ставятся в очередь. Вот и тормоза.


 
Ega23 ©   (2005-01-13 16:26) [12]

Генератор общий на всю базу.
Не на одну таблицу.
В итоге все транзакции на вставку по всем таблицам (где я юзаю идентификатор) ставятся в очередь. Вот и тормоза.


??????????   Несколько раз прочитал, ничего не понял.
Какой генератор?


 
Ш-К   (2005-01-13 16:32) [13]

Не генератор - идентификатор о котором и речь. Тот, что 4 байта. Он общий для всех таблиц.


 
Ega23 ©   (2005-01-13 16:36) [14]

Не генератор - идентификатор о котором и речь. Тот, что 4 байта. Он общий для всех таблиц.

Изврат какой-то...


 
sniknik ©   (2005-01-13 20:45) [15]

> Изврат какой-то...
нормальная практика в IB (зачем к примеру "рисовать" кучу генераторов если все таблици на один можно "повесить", вот и получился "сквозной" через всю базу. но попробуй эту логику в другие базы перенести, и ... ;о)))

> В итоге все транзакции на вставку по всем таблицам (где я юзаю идентификатор) ставятся в очередь. Вот и тормоза.
ты что в монопольной транзакции при начале редактирования ту таблицу открываеш? ;о)) (записал, прочитал, бросил, вот достойная логика, и никаких тормозов ;)


 
Val ©   (2005-01-14 09:45) [16]

>[3] sniknik ©   (13.01.05 15:21)
у них мозги по другому повернуты, с их отличной от других системой генераторов.
>[15] sniknik ©   (13.01.05 20:45)
но попробуй эту логику в другие базы перенести, и ...
Думаю, абсолютно спокойно можно провести аналогию с оракловскими сиквенсес, например.



Страницы: 1 вся ветка

Текущий архив: 2005.02.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.039 c
6-1101665260
leprikon_ix
2004-11-28 21:07
2005.02.13
Просмотр файловой системы удаленного ПК


1-1107264731
wolf2541
2005-02-01 16:32
2005.02.13
file not found fadeworks.dcu


1-1107240934
syte_ser78
2005-02-01 09:55
2005.02.13
TLSDNumber


1-1107172379
ИванИванычч
2005-01-31 14:52
2005.02.13
CRC


9-1099765354
FRick
2004-11-06 21:22
2005.02.13
SLScene_AntiAliasing