powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Генерация ID для примари кея
23 сообщений из 23, страница 1 из 1
Генерация ID для примари кея
    #33469008
Костя П.О.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

А кто как генерит сабж?
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33469041
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
id char(36) deafult uuidtostr(newid())
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33469076
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
id integer not null default autoincrement
____________________________________
- Гарфилд, мышь!
- Спасибо, я сыт!
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33469199
Костя П.О.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uuidtostr() это что за зверь? чёт не могу найти, DynaText говорит что незнает такого....
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33469228
Костя П.О.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати справедливости ради стоит сказать что сабж касается ASE
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33469270
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Костя П.О. пишет:
> Кстати справедливости ради стоит сказать что сабж касается ASE

с этого и надо было начинать, а не заставлять добрых людей зря
напрягаться. Лень прочитать заголовок первого топика? Или однако чукча
писатель, а не читатель? Читай документацию на предмет identity.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33469319
Костя П.О.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр ГoлдунЧитай документацию на предмет identity.

мне не суть интересна теория. хотя без неё никуда! интересуют как практические примеры так и теория. кого-то устраивает хаотичный ключ базирующийся на genid, кто-то инкрементирует. в моём комплексе используется составной ключ.
типа:
- 6 символов время
- 2 сивола код комплекса
- 4 символа счётчик
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33469590
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Костя П.О. Александр ГoлдунЧитай документацию на предмет identity.

мне не суть интересна теория. хотя без неё никуда! интересуют как практические примеры так и теория. кого-то устраивает хаотичный ключ базирующийся на genid, кто-то инкрементирует. в моём комплексе используется составной ключ.
типа:
- 6 символов время
- 2 сивола код комплекса
- 4 символа счётчик
И зачем такой большой составной ключ, если IDENTITY делает ровно столько, сколько нужно ? И при чем тут теория, когда любой сервер имеет четко описанный функционал, который и нужно стремиться использовать в практике, а как раз не придумывать теории ?
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33469999
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDENTITY.
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33474938
Костя П.О.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASCRUSИ зачем такой большой составной ключ, если IDENTITY делает ровно столько, сколько нужно?
ну... я всей картины не знаю, но уверен что более менее правильно понимаю суть такого подхода. Так как имеется N комплексов все они возможно связываются в некой единой точке. Код комплекса позволяет определить к какому комплексу относится событие, идентити наврядли это предоставит. а время и счётчик это уже вытекающее.
зы если я правильно конечно понимаю суть....
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33474973
Костя П.О.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASCRUSИ зачем такой большой составной ключ, если IDENTITY делает ровно столько, сколько нужно?

Также есть ещё один момент. Допустим по факту инсерта мне необходим примарикей для каких-то действий. Как я его получу если будет допустим автоинкремент? селест макс? по идее это криво. Предполагаю что с идентити ситуация таже.
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33474975
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Костя П.О. пишет:

> Также есть ещё один момент. Допустим по факту инсерта мне необходим
> примарикей для каких-то действий. Как я его получу если будет допустим
> автоинкремент? селест макс?

Ни в коем случае! См. в хелпах про переменную @@identity
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33474990
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Костя П.О. ASCRUSИ зачем такой большой составной ключ, если IDENTITY делает ровно столько, сколько нужно?

Также есть ещё один момент. Допустим по факту инсерта мне необходим примарикей для каких-то действий. Как я его получу если будет допустим автоинкремент? селест макс? по идее это криво. Предполагаю что с идентити ситуация таже.
Лучше не предполагать, а все таки читать документацию и впервую очередь искать уже готовое решение. Избежите множества ошибок, которые потом могут выйти боком
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33476264
Костя П.О.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр ГoлдунНи в коем случае! См. в хелпах про переменную @@identity
Posted via ActualForum NNTP Server 1.3
сенкс! такс, пошёл штудировать буки :)

ASCRUSЛучше не предполагать, а все таки читать документацию и впервую очередь искать уже готовое решение. Избежите множества ошибок, которые потом могут выйти боком
Эх, кто б спорил:) Просто есть куча существующих комплексов(с генерацией примарикея как описано выше) мной на данный момент разрабатывается новый. Вот и сижу и думаю, быть как все:) или выделеться и сделать "правильно"
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33477695
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Костя П.О.используется составной ключ.
типа:
- 6 символов время
- 2 сивола код комплекса
- 4 символа счётчик
Если БД распределенная, а потом реплицируется в одну центральную, то, IMHO, самое нормальное решение. А по поводу где брать Костя П.О.4 символа счётчик - тынць

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33478321
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поделюсь извращениями по поводу генирации ключей для ASE.
таблица:
Код: plaintext
1.
2.
3.
4.
create table opa_clef(
   cle_table   t_a_sysname  not null,
   cle_id   t_n_id  not null,
   constraint pk_opa_clef primary key clustered ( cle_table )
)
и процедура которая делает
Код: plaintext
update cle_id=cle_id+ 1  where cle_table=@cle_table
НО
Эта процедура вызывалась через Remote Server у которого Server class = sql_server и для ASE версии ниже 12 этот вызов был безтранзакционным что НЕ приводило к блокировкам при наплыве записей в разные таблицы.
И все было безоблачным пока не поставили версию 12. И тут начался геморой.
Чтоб не рушить систему (а она большая), изменили примари кей:
Код: plaintext
constraint pk_opa_clef primary key clustered ( cle_table, cle_id )
и вместо update написали insert select max ... at isolation level 0
блокировок нет, но шибка дублирования ключа есть. поэтому делаем несколько раз до успешного выполнения комманды.

Вот как бывает когда не пользуются стандартом!
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33478420
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASE 12.5.3
Номер версии очень важен.
1) IDENTITY
Только обязательно задать опцию with identity_gap = 1 или что-то около того взависимости от частоты добавления. А то он вам такого нагенерит.
2) Способ описанный Dmitry. Имеет недостаток увелечения конкуренции между процессами.
3) newid(). Тип поля varbinary(16) или char(32)
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33479101
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправочка для случая 3) тип varbinary(16) кажется не катит. Только char(32)
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33480291
sn1251
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry....
Эта процедура вызывалась через Remote Server у которого Server class = sql_server и для ASE версии ниже 12 этот вызов был безтранзакционным что НЕ приводило к блокировкам при наплыве записей в разные таблицы.
И все было безоблачным пока не поставили версию 12. И тут начался геморой.
...
Даже с set transactional_rpc off (или для всего сервера enable xact coordination=0) блокировало?
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33480608
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sn1251Даже с set transactional_rpc off (или для всего сервера enable xact coordination=0) блокировало?

Уже не помню точно. Но кажется мы перепробовали все. и даже в сайбейс писали. нам ответили что нельзя безтранзакционно вызвать проц, кроме как на серверах какого-то там класса которые не сайбейс. возможно это был глюк 12.5.0.3 но он был на продакшин базах - решать надо быо быстро.
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33482157
Mike Evteev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем нужна была внетранзакционность?
Я наоборот сделал все под отдельной транзакуцией. Как настоящая IDENTITY - кликает в любом случае. Правда количество операций у меня мизерное, так что производительности это не помеха.
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33484370
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike EvteevА зачем нужна была внетранзакционность?

в одной транзакции обрабатывается около 30 таблиц... и одновременных конектов около 50, и все эти ID-шки лежат в одной таблице: взаимных блокировок не избежать.

По поводу Identity: если вставить запись в таблицу с идентити и откатить транзакцию то значение идентити не откатится. так что я-бы сказал что генерация идентити нетранзакционная операция.
...
Рейтинг: 0 / 0
Генерация ID для примари кея
    #33485818
Mike Evteev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
По поводу Identity: если вставить запись в таблицу с идентити и откатить транзакцию то значение идентити не откатится. так что я-бы сказал что генерация идентити нетранзакционная операция.


Дак я же об этом и говорю... Поскольку подручными средствами вне транзакции выполнить нельзя, то все вынес в отдельную транзакцию, которая всегда коммитится.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Генерация ID для примари кея
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]