|
|
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Собственно вопрос в теме. И еще, есть ли в Oracle Autoincrement поля, и если да, то можно ли по ним генерировать Primary Key. Всем заранее thanks. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:37 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Правильно. Autoincrement типов данных нет, для эмуляции этого обычно используют Sequence+триггер на insert ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:40 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Можно прямо при инсерте Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:52 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Я б даже сказал - желательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:53 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
я бы осмелился предположить, что заполнение первичного ключа из seq лучше делать на клиенте, а не в тригере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:56 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Дело в том, что Sequence периодически слетают,поэтому ID неправильно генерятся. Есть ли способ против этого бороться ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 11:57 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
что значит слетают? нужна строгая последовательность без пропусков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:00 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Я сторонник естественных ключей, которые формируются не автоинкрементом, а идентифицируют объект по какой-либо его "физической" характеристике. При таком подходе приходится строить меньше индексов, и многие запросы обходятся без операции соединения - в результате производительность больше. Неудобство в том, что в Oracle в определении граничений ссылочной целостности отсутствует фраза "ON UPDATE CASCADE" (в этом плане Interbase более удобен), и каскадное обновление приходится реализовывать триггерами. См. статью Усова "Ключ или отмычка" на сайте www.alexus.ru . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:00 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
"Я сторонник естественных ключей, которые формируются не автоинкрементом, а идентифицируют объект по какой-либо его "физической" характеристике" К сожалению есть вещи, где такой подход не подойдет . Например универсальную систему акцептования/верефикации документов нельзя написать, если в системе нет искусственный ключей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:10 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Я читала в доке почему нет ON UPDATE CASCADE. Прежде всего по соображениям производительности, учитывая что таблицы могут быть огромные. В интербейсе никогда не приходилось использовать ON UPDATE CASCADE, вот ON DELETE CASCADE штука полезная. Если в приложении возникает необходимость менять значение primary key, то это признак неудачного дизайна или не удачного выбора primary key, ИМХО. Поскольку знначение primary key может в приложении понадобится сразу после вставки, например для создания подчиненных элементов, я бы тоже генерировала значения в приложении а не в триггере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:14 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Начинается:) Я бы еще упомянул статью Т.Тенцера Естественные ключи против искуственных ключей . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:15 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
2 Владимир П. Еще без искусственных ключей не удасться написать универсальный обработчик документов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:16 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
to Denis Очень интересная статья! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:37 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
2Violina >Поскольку знначение primary key может в приложении понадобится сразу после вставки, например для создания подчиненных элементов, я бы тоже генерировала значения в приложении а не в триггере. для этого делается insert .... returning ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 12:51 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
2 nick. Это как такое из Формс сделать? т.е когда insert не руками пишеться, а средством разработки где-то внутри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 13:01 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
to nick для этого делается insert .... returning ... а можно пример? При программировании БД клиента (InterBase) я использовала триггеры on before insert и генераторы для этих целей. Там returning не было, но можно было это имитировать запоковав insert в процедуру которая выданный при вставке ключ и возвращала. Но была одна проблема, на клиенте еще при создании parent/child объектов нужно было обеспечивать master/details связь (клиент писали на JBuilder dbSwing DataExpress). Так что например значение MASTER.ID/CHILD.MASTER_ID требовалось еще до выполнения вставки. Например Создешь department Создаешь пару сотрудников в нем - уже нужен department.id Потом все это хозяйство посылаешь в базу Поэтому у я решила запрашивать новое значение генератора в приложении а не в триггере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 13:07 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Кто сможет мне истолковать такой вот пример по сивенсам из Knowledge Xpert Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 13:19 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Есть два подхода к главным ключам. И тот, и другой имеют достоинства и недостатки. Ссылаться на какой-то как единственно правильный нельзя. А тем более ссылаться на книги, написанные приверженцами одной из школ. Самый главный недостаток естественных ключей - их нельзя обновлять в системах с репликацией. Второй существенный недостаток - составной главный ключ породит составной внешний с более низкой производительностью связок таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 13:19 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
2Работник незнаю, с формс никогда не работал 2Violina insert into department(name) values('mydepartment') retirning id into iddep insert customer(id_department,name) values(iddep,'Violina') примерно так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 13:52 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
2 Работник В формах пишется триггер pre-insert с примерно таким текстом insert id_seq.nextval into :id from dual; И все. Надо подумать еще над тем, чтобы поле id не было видно на форме, иначе все юзвери дадут ему какой-то потусторонний смысл и потребуют затыкать дырки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 13:57 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
>я бы осмелился предположить, что заполнение первичного ключа из seq лучше делать на клиенте, а не в тригере А где гарантия, что все используют в качестве клиента приложение, заполняющее ключевое поле? Поэтому я поддерживаю Scott Tiger >для этого делается insert .... returning ... Но "returning" не входит в стандарт SQL, а является расширением при использовании OCI, поэтому я использую конструкцию: INSERT с триггером на заполнение ключа SELECT seq.currval INTO :new_id from dual; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 16:42 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
Работал я с любителями использования естетсвенных ключей. Долго мы спорили, но каждый остался при своем мнении, даже поле того, как в один прекрасный момент пришлось во всех таблицах системы менять кода ЖД станций. История очень поучительна. В Советском союзе была общая система кодирования Жд станций. Затем , после раздела, каждый стал сам себе хозяином. И в один прекрасный момент МПС переприсвоили код ЖД станции, которая раньше располагалась в Казахстане, другой ЖД станции расположенной на территории РФ. Система находилась в эсплуатации с начала 90-х годов и в ней были зарегистрированы заказы и отгрузка на Казахскую станцию. Плюс пришел новый заказ с отгрузкой на новую российскую ЖД станцию. Вопрос к любителям естественных ключей: «Что делать?» ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 17:29 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
2 Kr_Yury "А где гарантия, что все используют в качестве клиента приложение, заполняющее ключевое поле? Поэтому я поддерживаю Scott Tiger " Смешно даже немного. а где гарантия что оно вообще правильно тогда написано. Как позвольте спросить его тестировали. Что там еще забыли заполнить ))? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 17:50 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
если с точки зрения теории к данному вопросу подходить (вопрос естественные vs искуственные PK) то сразу предлагаю копья не ломать, а проголосовать. Кого больше окажется "естественников" или "искуственников" то и определим правильным - обратное назовем ересью. А потом все разойдемся, каждый работать над своей системой, в глубине души понимая что его вариант решения данной дискуссии - самый правильный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 17:53 |
|
||
|
Правильно ли генерировать Primary Key на основе Sequence
|
|||
|---|---|---|---|
|
#18+
"если с точки зрения теории к данному вопросу подходить (вопрос естественные vs искуственные PK) то сразу предлагаю копья не ломать, а проголосовать" С каких это теоритические вопросы голосованием решают )). Давай те проголосуем что 2+2=5. Кто за ). Просто пусть сторонники естественных ключей ответят как быть 1) При репликации 2) При разработке универсальных механизмов ( например акцептование и верификация и обработчики документов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 18:04 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2779&tid=1990575]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 349ms |

| 0 / 0 |
