Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
Ш-К   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.045 c
14-1106449696
Думкин
2005-01-23 06:08
2005.02.13
С Днем рождения! 23 января


4-1103695704
race1
2004-12-22 09:08
2005.02.13
DrawText


9-1099625496
Masacre
2004-11-05 06:31
2005.02.13
Управление экраном


1-1106837691
novice_man
2005-01-27 17:54
2005.02.13
Динамическая библиотека и указатель.


1-1106812445
tytus
2005-01-27 10:54
2005.02.13
ListBox.Item и Объект





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский