Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Генератор уникального значения [MSSQL]


Ш-К ©   (2005-01-13 15:09:00) 

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


Val   (2005-01-14 09:45:00) [1]

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


sniknik   (2005-01-13 20:45:00) [2]

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

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


Ega23   (2005-01-13 16:36:00) [3]

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

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


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

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


Ega23   (2005-01-13 16:26:00) [5]

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


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


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

Ega23 ©   (13.01.05 16:09) [10]

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


Ega23   (2005-01-13 16:09:00) [7]

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


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

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


Ega23   (2005-01-13 15:57:00) [9]

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

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


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

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

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

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


Polevi   (2005-01-13 15:39:00) [11]

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


Ega23   (2005-01-13 15:33:00) [12]

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

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


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

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

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


sniknik   (2005-01-13 15:21:00) [14]

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

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


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

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


Stanislav   (2005-01-13 15:17:00) [16]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо