|
|
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Я всё еще по инерции делаю так, как научился на Hello World: Код: html 1. 2. 3. 4. ну и создаю триггер на каждую значимую таблицу. Хоть делаю я это процедурой и меня не напрягает, всё равно чувствую какое-то внутреннее отторжение :( А что говорят лучшие практики? Какие риски при отказе от этой конструкции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 22:44 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Курдль, тоже везде триггеры. А что за код выше? Для чего? )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 22:56 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Petro123, Ну вот почему бы нам не подставить последовательность и забыть про триггеры? :) Это не код, а copy/paste с текста одного шага визарда создания новой страницы - формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 23:06 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 23:13 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Identity ColumnsКурдль, https://oracle-base.com/articles/12c/identity-columns-in-oracle-12cr1 Я пробежал по диагонали, но не понял, как это поможет в моем вопросе :( APEX позволяет выбрать генерацию триггером или явно указать последовательность. Ну появится автогенерируемое поле, примем за автотриггер (триггер, который не надо создавать). А по поводу моего вопроса - кажись я догадываюсь: использование последовательности потребует доп. обращения к серверу. Я так думаю (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 23:29 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Курдль, Какого обращения к серверу, если и так все на сервере). Плюнь. У меня триггер для хранимок, а генератор для визарда апекса. Там в 4 ке просто вроде нет п.п. для триггера. Откуда взял код я так и не понял. Дал бы скрин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 09:35 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
КурдльЯ всё еще по инерции делаю так, как научился на Hello World: Код: html 1. 2. 3. 4. ну и создаю триггер на каждую значимую таблицу. Хоть делаю я это процедурой и меня не напрягает, всё равно чувствую какое-то внутреннее отторжение :( А что говорят лучшие практики? Какие риски при отказе от этой конструкции? Вот я бы триггеры на первичный клич не использовал... Отягощает административное сопровождение и т.д. (Бывает например надо подлить к одной таблицы другую) В коде вообще нет никаких проблем написать insert into table(id,columns[]) values(id_seqtable.nextval,values[]) Если апекс то он тоже может брать sequence... И вообще религия не запрещает несколько таблиц садить на одно sequence ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 09:58 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Курдль, Для получения первичного ключа используется последовательность. Значение первичного ключа из последовательности достается не триггером, а запросе или теле процедуры, это дает гибкость при использовании "самописных" процедур в Апексе. Апекс автоматически поддерживает этот механизм присвоения первичного ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:08 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
irbis_alИ вообще религия не запрещает несколько таблиц садить на одно sequence Можно на все таблицы, это называется сквозной первичный ключ. :) Каждая строчка в схеме будет с уникальным ID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:10 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
blkangelirbis_alИ вообще религия не запрещает несколько таблиц садить на одно sequence Можно на все таблицы, это называется сквозной первичный ключ. :) Каждая строчка в схеме будет с уникальным ID. В первых версиях MS SQL никто не понимал, как получать новое ID до коммита (и сейчас не все понимают). Поэтому все пытались использовать... GUID :) Странно, что Sybase, также, как и MS, использовавшая для своей СУБД Watcom SQL, сразу предусмотрела генераторы и геморрой с ней не возник. blkangelДля получения первичного ключа используется последовательность. Значение первичного ключа из последовательности достается не триггером, а запросе или теле процедуры, это дает гибкость при использовании "самописных" процедур в Апексе. Апекс автоматически поддерживает этот механизм присвоения первичного ключа. А вот этого я не понял. Зачем тогда APEX спрашивает при создании "формы", как изволите генерить новые ID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:41 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
irbis_alinsert into table(id,columns[]) values(id_seqtable.nextval,values[]) я вот, ленивый такую фигню писать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:42 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Курдль blkangelДля получения первичного ключа используется последовательность. Значение первичного ключа из последовательности достается не триггером, а запросе или теле процедуры, это дает гибкость при использовании "самописных" процедур в Апексе. Апекс автоматически поддерживает этот механизм присвоения первичного ключа. А вот этого я не понял. Зачем тогда APEX спрашивает при создании "формы", как изволите генерить новые ID? При использовании последовательности без триггеров, апекс генерит процесс получения первчиного ключа, вот для этого и спрашивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:00 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Petro123irbis_alinsert into table(id,columns[]) values(id_seqtable.nextval,values[]) я вот, ленивый такую фигню писать). А я вообще не понимаю сути проблемы, т.к. проектирую БД в CASE-средствах, которые сами заботятся о создании sequences и т.д. и. т.п. Мне остаётся нажать кнопочку и получить скрипт развертывания БД (или её обновления). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:01 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
КурдльPetro123пропущено... я вот, ленивый такую фигню писать). А я вообще не понимаю сути проблемы, т.к. проектирую БД в CASE-средствах, которые сами заботятся о создании sequences и т.д. и. т.п. Мне остаётся нажать кнопочку и получить скрипт развертывания БД (или её обновления). Суть не в развертывании, а в "лени"разработчика. Можно использовать любые схемы, и апекс и оракл это поддерживает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:03 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Курдль, ты меня не понял. У меня БЛ в хранимках и другая половина в процессах. Кода много. Зачем везде в коде писать nextval? если при триггере это писать не надо? Если бы у меня 12-тый оракл с его новым типом счётчик хорошо поддерживался в 4-ке, то я бы и генераторы не писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:07 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Petro123Курдль, ты меня не понял. У меня БЛ в хранимках и другая половина в процессах. Кода много. Зачем везде в коде писать nextval? если при триггере это писать не надо? Если бы у меня 12-тый оракл с его новым типом счётчик хорошо поддерживался в 4-ке, то я бы и генераторы не писал. Почему не понял? Очень даже понял! Однако не понимаю, как при обширной БЛ на хранимках, ты умудряешься обеспечивать связи "много-ко-многим" да и даже "много-к одному" без предварительного получения ID из последовательности? Например, заполняешь данные физ.лица и тут же прописываешь его паспорта. При этом ни ф.л., ни паспортов в БД еще нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:11 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
КурдльНапример, заполняешь данные физ.лица и тут же прописываешь его паспорта. Вариант1 - оракл рекомендует делать POST за 0,2 сек и потом ты знаешь ID. Это же мастера волшебники делают? Вариант2 - в таком 1% кода взять генератор. А триггер проверяет, идёл ли значение ID или нет. Варинт3 - ........ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:16 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
КурдльPetro123Курдль, ты меня не понял. У меня БЛ в хранимках и другая половина в процессах. Кода много. Зачем везде в коде писать nextval? если при триггере это писать не надо? Если бы у меня 12-тый оракл с его новым типом счётчик хорошо поддерживался в 4-ке, то я бы и генераторы не писал. Почему не понял? Очень даже понял! Однако не понимаю, как при обширной БЛ на хранимках, ты умудряешься обеспечивать связи "много-ко-многим" да и даже "много-к одному" без предварительного получения ID из последовательности? Например, заполняешь данные физ.лица и тут же прописываешь его паспорта. При этом ни ф.л., ни паспортов в БД еще нет? Именно поэтому лучше использовать без триггеров :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:17 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Petro123КурдльНапример, заполняешь данные физ.лица и тут же прописываешь его паспорта. Вариант1 - оракл рекомендует делать POST за 0,2 сек и потом ты знаешь ID. Это же мастера волшебники делают? Вариант2 - в таком 1% кода взять генератор. А триггер проверяет, идёл ли значение ID или нет. Варинт3 - ........ А это называется одним словом, говнокод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:19 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Курдль, меня терзают смутные сомненья. А не первый ли у тебя это триггер вообще? У меня в триггерах очень много БЛ. И поэтому вопрос, добавить в него nextval вообще - мизерный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:25 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Petro123irbis_alinsert into table(id,columns[]) values(id_seqtable.nextval,values[]) я вот, ленивый такую фигню писать). Ну если Вы хороший ИТ архитерктор Вы должны понимать,что при триггерной обработки оракле гораздо сильнее "трахает кэш " субд......намного чаще приседает и делает "ку"... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:43 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
irbis_alчто при триггерной обработки оракле гораздо сильнее "трахает кэш " субд......намного чаще приседает и делает "ку"... :-) не. Я наверно плохой, т.к. первый раз об этом слышу. Это наверно академики спорят. Разве у нас есть замена триггерам для целостности данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 11:59 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
irbis_al, а в 12-том со счётчиком как? Не будете использовать тип поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 12:00 |
|
||
|
Источник для первичного ключа - триггер, это анахронизм?
|
|||
|---|---|---|---|
|
#18+
Petro123irbis_al, а в 12-том со счётчиком как? Не будете использовать тип поля? :-) Ну до 12 го ещё мне долго...надо тестировать ....исследовать и т.д. Я работаю с sqlite (для андроидов и небольших встраиваемых баз(например для фискального регистратора) Так вот там тип автоинкрементное поле есть...и я его использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 12:06 |
|
||
|
|

start [/forum/topic.php?fid=50&msg=39296061&tid=1874545]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
192ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 556ms |

| 0 / 0 |
