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

Вниз

Автоинкрементные поля - вставка пропущенный значений   Найти похожие ветки 

 
Ega23 ©   (2011-10-04 17:33) [40]


> В случае какого-то сбоя в автоинкременте


8 лет за MSSQL.  От 7.2 до 2005, вместе с портативными версиями. Ни одного сбой не видел.


> Также можно одну секвенцию применить к нескольким таблицам,
>  что тоже иногда полезно....


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


 
pavel_guzhanov ©   (2011-10-04 17:49) [41]


> Хотя сейчас уже наверняка можно


В DB2 можно, только сначала надо найти сгенеренную СУБД секвенцию, и в новой таблице тоже прописать ее в автоинкрементном поле. Но искать придется по косвенным признакам, т.к имя у нее ни о чем не говорящее.


> 8 лет за MSSQL.  От 7.2 до 2005, вместе с портативными версиями.
>  Ни одного сбой не видел.


Я 8 лет за FireBird и Interbase. 4 года за DB2. Сбои в автоинкременте бывали... конечно редко, но все-таки бывали.


 
Anatoly Podgoretsky ©   (2011-10-04 20:47) [42]

> pavel_guzhanov  (04.10.2011 17:49:41)  [41]

В Interbase/FireBird нет автоинкримента


 
pavel_guzhanov ©   (2011-10-04 22:13) [43]


> В Interbase/FireBird нет автоинкримента


Я же говорю про секвенции и генераторы. В Interbase/Firebird мы используем генераторы.


 
Anatoly Podgoretsky ©   (2011-10-04 22:27) [44]


> Я же говорю про секвенции и генераторы. В Interbase/Firebird
> мы используем генераторы.

Вообще то говорил
> Сбои в автоинкременте бывали


 
pavel_guzhanov ©   (2011-10-05 09:22) [45]


> Вообще то говорил
> > Сбои в автоинкременте бывали

Признаю, неправильно сформулировал :о)


 
DiamondShark ©   (2011-10-05 13:15) [46]


> pavel_guzhanov ©   (04.10.11 16:47) [39]
> В случае какого-то сбоя в автоинкременте гораздо проще найти
> генератор или секвенцию по разумному наименованию, а не
> по сгенеренному СУБД.

В случае какого-то сбоя проще вообще ничего не искать, кроме имени таблицы:

DBCC CHECKIDENT ("table_name")


> Также можно одну секвенцию применить к нескольким таблицам,
>  что тоже иногда полезно....

Не вижу ни одного полезного применения.

Если сущности разделяют общее пространство идентификаторов, то они должны быть связаны какой-то общностью.
В терминах ООП такой общностью является отношение наследования, т.е. классы-сущности имеют общего предка.
При отображении такой структуры на реляционную модель получается мастер-таблица (класс-предок) и дополнительные таблицы (классы-потомки), связанные с мастером отношением один-к-одному:

CREATE TABLE AbstractEntity(
ID bigint not null identity(1,1) primary key,
-- common entity attributes
);

CREATE TABLE ConcreteEntity1(
ID bigint not null primary key,
-- private entity attributes
CONSTRAINT FK_ANCESTORKEY1 FOREIGN KEY(ID)
   REFERENCING AbstractEntity(ID)
   ON DELETE CASCADE
   ON UPDATE CASCADE
);

CREATE TABLE ConcreteEntity2(
ID bigint not null primary key,
-- private entity attributes
CONSTRAINT FK_ANCESTORKEY2 FOREIGN KEY(ID)
   REFERENCING AbstractEntity(ID)
   ON DELETE CASCADE
   ON UPDATE CASCADE
);

Если сущности не имеют общих атрибутов, то вообще нет смысла в общем пространстве идентификаторов.


 
Ega23 ©   (2011-10-05 13:19) [47]


> Если сущности не имеют общих атрибутов, то вообще нет смысла
> в общем пространстве идентификаторов.


Проблемы начинаются, когда имеют. Postgres в этом плане с его наследованием таблиц просто шикарен.



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

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

Наверх




Память: 0.55 MB
Время: 0.01 c
2-1317559190
lesstab
2011-10-02 16:39
2012.01.22
Групповое редактирование выбранных строк в ДБГриде


10-1176806385
Yanis
2007-04-17 14:39
2012.01.22
Нет ли у кого-нибудь файлика или описания


2-1318323559
i2e
2011-10-11 12:59
2012.01.22
Как искать ошибки AccessViolation?


4-1243546594
imprezident
2009-05-29 01:36
2012.01.22
Работа с компонентами стороннего приложения


2-1318165590
vivaldi
2011-10-09 17:06
2012.01.22
Снижение качества(сжатие)