powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Identity
15 сообщений из 15, страница 1 из 1
Identity
    #32890480
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две таблицы:

Контрагент (Id, ..., PhoneId, ...)
Телефон(PhoneId, Value, ...)

Для определения PhoneId напрашивается домен:

Код: plaintext
1.
execute sp_addtype D_PhoneId, "numeric(10)", "null"

тогда получаем:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table Contragent
(Id numeric ( 18 ) identity constraint pkContragent primary key,
 ...
 PhoneId D_PhoneId null,
 ...
)
go

create table Phone
(PhoneId D_PhoneId identity constraint pkPhone primary key,
 ...
)
go

И тут "...вот такая загогулина получается..." ;): для того, что бы быть identity в Phone домен D_PhoneId д. б. not null, но, поскольку у контрагента м.б. ваще телефон отсутствует, в Contragent домен D_PhoneId д. б. null. Как можно это развести?

Sybase ASE 12.5
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Identity
    #32891750
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще говоря, при определении таблицы поле с доменом может переопределять nullability используемого домена, если укажет его явно.
Я бы сделал домен с NOT NULL, а в таблицах бы переопределял, если там оно NULL.
...
Рейтинг: 0 / 0
Identity
    #32892854
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в параметрах ХП (если типы вх-вых параметров тоже указаны доменные и часть из них м.б. NULL - т.е. ситуевина аналогичная таблицам)?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Identity
    #32893326
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем. Параметры - это по сути переменные. А переменные всегда могут иметь значениt NULL, независимо ни от чего. Поэтому несмотря на то, что в домене будет "NOT NULL" или "NULL", переменная будет всегда "NULL". Кстати , то же касается и дефолтов и правил, привязанных к домену - к переменным они не применяются.
...
Рейтинг: 0 / 0
Identity
    #32898559
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пон... сп...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Identity
    #33009103
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SyBase ASE 12.5
Возникло еще несколько вопросов вопросов:
1. По неизвестным причинам слетела нумерация: 1, 2, 3, 4, 50000001, 50000002 и т. д. С чем это связано? Как можно этим управлять? Можно ли управлять шагом приращениея (50000000 в данном случае)?

2. Что будет, если такие прыжки будут неоднократны и произойдет переполнение? Т. е. имеется в виду следующее: поле identity, 4 example, numeric(18). При переполнении его @@identity будет возвращать значения с 1 с учетом получившихся в результате прыжков дыр или без?

3. Как бы резюме: "старшие товарищи"
(поскольку я юзаю субасю недавно), как бы из-за перечисленных выше непоняток, опасаются применять identity вообще - есть ли реальная почва для этих сомнений и факты, говорящие о неоднозначном поведении identity?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Identity
    #33009143
L_Leonid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_SoftSyBase ASE 12.5
Возникло еще несколько вопросов вопросов:
1. По неизвестным причинам слетела нумерация: 1, 2, 3, 4, 50000001, 50000002 и т. д. С чем это связано? Как можно этим управлять? Можно ли управлять шагом приращениея (50000000 в данном случае)?


каждый раз при старте сервера выделяется новый блок identity с которого будет заполнение. Это нормально.

Ex_Soft
2. Что будет, если такие прыжки будут неоднократны и произойдет переполнение? Т. е. имеется в виду следующее: поле identity, 4 example, numeric(18). При переполнении его @@identity будет возвращать значения с 1 с учетом получившихся в результате прыжков дыр или без?

Переполнения не будет, всегда выдается блок с номером больше промежуточного - чем больше делаеь рестартов тем больше остается "дырок" внутри блока.

Ex_Soft
3. Как бы резюме: "старшие товарищи" опасаются применять identity вообще - есть ли реальная почва для этих сомнений и факты, говорящие о неоднозначном поведении identity?

Да нет, давно используем проблем не было, только один раз слетели identity - лечилось патчем от Sybase
...
Рейтинг: 0 / 0
Identity
    #33009263
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft1. ...Как можно этим управлять? Можно ли управлять шагом приращениея (50000000 в данном случае)?

L_LeonidПереполнения не будет, всегда выдается блок с номером больше промежуточного - чем больше делаеь рестартов тем больше остается "дырок" внутри блока.

наверное тафайте покажу на пальцах:
Код: plaintext
1.
2.
3.
4.
create table test
(id numeric( 2 ) identyty,
 value varchar( 255 )
)
добавляем записи
Код: plaintext
1.
2.
3.
4.
1 RecNo#1
2 RecNo#2
3 RecNo#3
4 RecNo#4

тут все пАлАмАлось
Код: plaintext
1.
2.
3.
4.
51 RecNo#5
52 RecNo#6
53 RecNo#7
54 RecNo#8

тут опять все пАлАмАлось Ж8-/
Код: plaintext
1.
2.
98 RecNo#9
99 RecNo#10
а фот теперь вопрос: при вставке следующей записи что произойдет (держим в уме, что id numeric(2), т.е. 100 уже не влазит):
а) вернется 1 и, соответственно, будем иметь два 8-х вагона и на inserte Violation of PRIMARY or UNIQUE KEY constraint
b) вернется 5 - т.е. min unused values
c) что-то еще...

L_Leonidтолько один раз слетели identity - лечилось патчем от Sybase
Какая версия (сервака)? Шо за патч?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Identity
    #33009272
L_Leonid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft Ex_Soft1. ...Как можно этим управлять? Можно ли управлять шагом приращениея (50000000 в данном случае)?


зависит от размера страниц, про это было где-то в доке сказано

L_Leonidтолько один раз слетели identity - лечилось патчем от Sybase
Какая версия (сервака)? Шо за патч?
_________________
"Helo, word!" - 17 errors 56 warnings

9712 254865 With a table having a unique index on an identity
column, if the database is dumped followed by more
inserts to the table before a server crash, then after
reboot, subsequent attempts to insert to the table will
fail with 2601 error: "Attempt to insert duplicate key
row in object <objname> with unique index <indname>."

Патч 10979 к ASE 12.5
...
Рейтинг: 0 / 0
Identity
    #33009308
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_Leonid 9712 254865 With a table having a unique index on an identity
column, if the database is dumped followed by more
inserts to the table before a server crash, then after
reboot, subsequent attempts to insert to the table will
fail with 2601 error: "Attempt to insert duplicate key
row in object <objname> with unique index <indname>."
относится к:
L_Leonidтолько один раз слетели identity - лечилось патчем от Sybase
||
Ex_Softнаверное тафайте покажу на пальцах...

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Identity
    #33009312
L_Leonid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft[quot L_Leonid] 9712 254865 With a table having a unique index on an identity
column, if the database is dumped followed by more
inserts to the table before a server crash, then after
reboot, subsequent attempts to insert to the table will
fail with 2601 error: "Attempt to insert duplicate key
row in object <objname> with unique index <indname>."
относится к:
L_Leonidтолько один раз слетели identity - лечилось патчем от Sybase

Была ошибка при старте базы слетали identity - лечит вышеозначенный патч
...
Рейтинг: 0 / 0
Identity
    #33009318
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пон
тогда осталось тока разрешить неопределенность
Ex_Softнаверное тафайте покажу на пальцах...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Identity
    #33009853
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftПо неизвестным причинам слетела нумерация: 1, 2, 3, 4, 50000001, 50000002 и т. д. С чем это связано? Как можно этим управлять? Можно ли управлять шагом приращениея (50000000 в данном случае)?
Курить в направлении identity_gap.
...
Рейтинг: 0 / 0
Identity
    #33010168
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_Leonidкаждый раз при старте сервера выделяется новый блок identity с которого будет заполнение
refman2ru.pdfВ результате сбоев сервера между значениями столбца IDENTITY могут возникнуть разрывы. Эти разрывы могут также появиться при откате транзакций, удалении строк или вставке значений в столбец IDENTITY вручную. Максимальное значение этого разрыва (шага) зависит от значений параметров конфигурации identity burning set factor и identity grab size, а также от значений параметра identity_gap, указанного в операторах create table или select into. Дополнительную информацию о различных методах установки шага между значениями IDENTITY см. в разделе “Managing Identity Gaps in Tables” главы 7, “Creating Databases and Tables”, книги Transact-SQL User’s Guide.
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Identity
    #33020202
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ВаскецовКурить в направлении identity_gap
покурил, почитал доку...
сделал, 4 example,
Код: plaintext
1.
sp_chgattribute "TableName", "identity_gap",  10 
sp_help TableName
identity_gap
10

но при вставке (после надругательств на серваком) все равно identity вылезло с н-цатью нулями Ж8-/
Мо план галимый попался?
Что еще ната покрутить-подкрутить шоб уменьшить интервал?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Identity
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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