powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Источник для первичного ключа - триггер, это анахронизм?
25 сообщений из 36, страница 1 из 2
Источник для первичного ключа - триггер, это анахронизм?
    #39295794
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я всё еще по инерции делаю так, как научился на Hello World:
Код: html
1.
2.
3.
4.
Primary Key Column 1:
XXXX_ID
Source Type: (Value Required)
Existing trigger


ну и создаю триггер на каждую значимую таблицу.
Хоть делаю я это процедурой и меня не напрягает, всё равно чувствую какое-то внутреннее отторжение :(
А что говорят лучшие практики? Какие риски при отказе от этой конструкции?
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39295795
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,
тоже везде триггеры.
А что за код выше? Для чего? ))))
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39295798
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Ну вот почему бы нам не подставить последовательность и забыть про триггеры? :)

Это не код, а copy/paste с текста одного шага визарда создания новой страницы - формы.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39295800
Identity Columns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39295803
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Identity ColumnsКурдль,

https://oracle-base.com/articles/12c/identity-columns-in-oracle-12cr1

Я пробежал по диагонали, но не понял, как это поможет в моем вопросе :(

APEX позволяет выбрать генерацию триггером или явно указать последовательность.
Ну появится автогенерируемое поле, примем за автотриггер (триггер, который не надо создавать).


А по поводу моего вопроса - кажись я догадываюсь: использование последовательности потребует доп. обращения к серверу.
Я так думаю (с)
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39295942
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,
Какого обращения к серверу, если и так все на сервере). Плюнь.
У меня триггер для хранимок, а генератор для визарда апекса. Там в 4 ке просто вроде нет п.п. для триггера.
Откуда взял код я так и не понял. Дал бы скрин.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39295963
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльЯ всё еще по инерции делаю так, как научился на Hello World:
Код: html
1.
2.
3.
4.
Primary Key Column 1:
XXXX_ID
Source Type: (Value Required)
Existing trigger


ну и создаю триггер на каждую значимую таблицу.
Хоть делаю я это процедурой и меня не напрягает, всё равно чувствую какое-то внутреннее отторжение :(
А что говорят лучшие практики? Какие риски при отказе от этой конструкции?

Вот я бы триггеры на первичный клич не использовал...
Отягощает административное сопровождение и т.д.
(Бывает например надо подлить к одной таблицы другую)
В коде вообще нет никаких проблем написать
insert into table(id,columns[]) values(id_seqtable.nextval,values[])
Если апекс то он тоже может брать sequence...
И вообще религия не запрещает несколько таблиц садить на одно sequence
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39295978
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курдль,

Для получения первичного ключа используется последовательность.
Значение первичного ключа из последовательности достается не триггером, а запросе или теле процедуры, это дает гибкость при использовании "самописных" процедур в Апексе.
Апекс автоматически поддерживает этот механизм присвоения первичного ключа.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39295982
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alИ вообще религия не запрещает несколько таблиц садить на одно sequence
Можно на все таблицы, это называется сквозной первичный ключ. :) Каждая строчка в схеме будет с уникальным ID.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296015
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelirbis_alИ вообще религия не запрещает несколько таблиц садить на одно sequence
Можно на все таблицы, это называется сквозной первичный ключ. :) Каждая строчка в схеме будет с уникальным ID.

В первых версиях MS SQL никто не понимал, как получать новое ID до коммита (и сейчас не все понимают). Поэтому все пытались использовать... GUID :)
Странно, что Sybase, также, как и MS, использовавшая для своей СУБД Watcom SQL, сразу предусмотрела генераторы и геморрой с ней не возник.

blkangelДля получения первичного ключа используется последовательность.
Значение первичного ключа из последовательности достается не триггером, а запросе или теле процедуры, это дает гибкость при использовании "самописных" процедур в Апексе.
Апекс автоматически поддерживает этот механизм присвоения первичного ключа.

А вот этого я не понял. Зачем тогда APEX спрашивает при создании "формы", как изволите генерить новые ID?
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296018
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alinsert into table(id,columns[]) values(id_seqtable.nextval,values[])
я вот, ленивый такую фигню писать).
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296054
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курдль
blkangelДля получения первичного ключа используется последовательность.
Значение первичного ключа из последовательности достается не триггером, а запросе или теле процедуры, это дает гибкость при использовании "самописных" процедур в Апексе.
Апекс автоматически поддерживает этот механизм присвоения первичного ключа.

А вот этого я не понял. Зачем тогда APEX спрашивает при создании "формы", как изволите генерить новые ID?

При использовании последовательности без триггеров, апекс генерит процесс получения первчиного ключа, вот для этого и спрашивает.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296057
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123irbis_alinsert into table(id,columns[]) values(id_seqtable.nextval,values[])
я вот, ленивый такую фигню писать).

А я вообще не понимаю сути проблемы, т.к. проектирую БД в CASE-средствах, которые сами заботятся о создании sequences и т.д. и. т.п. Мне остаётся нажать кнопочку и получить скрипт развертывания БД (или её обновления).
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296061
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КурдльPetro123пропущено...

я вот, ленивый такую фигню писать).

А я вообще не понимаю сути проблемы, т.к. проектирую БД в CASE-средствах, которые сами заботятся о создании sequences и т.д. и. т.п. Мне остаётся нажать кнопочку и получить скрипт развертывания БД (или её обновления).
Суть не в развертывании, а в "лени"разработчика.
Можно использовать любые схемы, и апекс и оракл это поддерживает.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296063
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,
ты меня не понял.
У меня БЛ в хранимках и другая половина в процессах.
Кода много.
Зачем везде в коде писать nextval? если при триггере это писать не надо?
Если бы у меня 12-тый оракл с его новым типом счётчик хорошо поддерживался в 4-ке, то я бы и генераторы не писал.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296071
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Курдль,
ты меня не понял.
У меня БЛ в хранимках и другая половина в процессах.
Кода много.
Зачем везде в коде писать nextval? если при триггере это писать не надо?
Если бы у меня 12-тый оракл с его новым типом счётчик хорошо поддерживался в 4-ке, то я бы и генераторы не писал.

Почему не понял? Очень даже понял!
Однако не понимаю, как при обширной БЛ на хранимках, ты умудряешься обеспечивать связи "много-ко-многим" да и даже "много-к одному" без предварительного получения ID из последовательности?
Например, заполняешь данные физ.лица и тут же прописываешь его паспорта. При этом ни ф.л., ни паспортов в БД еще нет?
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296076
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльНапример, заполняешь данные физ.лица и тут же прописываешь его паспорта.
Вариант1 - оракл рекомендует делать POST за 0,2 сек и потом ты знаешь ID.
Это же мастера волшебники делают?
Вариант2 - в таком 1% кода взять генератор. А триггер проверяет, идёл ли значение ID или нет.
Варинт3 - ........
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296078
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КурдльPetro123Курдль,
ты меня не понял.
У меня БЛ в хранимках и другая половина в процессах.
Кода много.
Зачем везде в коде писать nextval? если при триггере это писать не надо?
Если бы у меня 12-тый оракл с его новым типом счётчик хорошо поддерживался в 4-ке, то я бы и генераторы не писал.

Почему не понял? Очень даже понял!
Однако не понимаю, как при обширной БЛ на хранимках, ты умудряешься обеспечивать связи "много-ко-многим" да и даже "много-к одному" без предварительного получения ID из последовательности?
Например, заполняешь данные физ.лица и тут же прописываешь его паспорта. При этом ни ф.л., ни паспортов в БД еще нет?
Именно поэтому лучше использовать без триггеров :)
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296079
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123КурдльНапример, заполняешь данные физ.лица и тут же прописываешь его паспорта.
Вариант1 - оракл рекомендует делать POST за 0,2 сек и потом ты знаешь ID.
Это же мастера волшебники делают?
Вариант2 - в таком 1% кода взять генератор. А триггер проверяет, идёл ли значение ID или нет.
Варинт3 - ........
А это называется одним словом, говнокод.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296090
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,
меня терзают смутные сомненья. А не первый ли у тебя это триггер вообще?
У меня в триггерах очень много БЛ. И поэтому вопрос, добавить в него nextval вообще - мизерный.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296116
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123irbis_alinsert into table(id,columns[]) values(id_seqtable.nextval,values[])
я вот, ленивый такую фигню писать).

Ну если Вы хороший ИТ архитерктор Вы должны понимать,что при триггерной обработки оракле гораздо сильнее "трахает кэш " субд......намного чаще приседает и делает "ку"... :-)
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296130
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alчто при триггерной обработки оракле гораздо сильнее "трахает кэш " субд......намного чаще приседает и делает "ку"... :-)
не. Я наверно плохой, т.к. первый раз об этом слышу. Это наверно академики спорят.
Разве у нас есть замена триггерам для целостности данных?
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296133
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
а в 12-том со счётчиком как? Не будете использовать тип поля?
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296137
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123irbis_al,
а в 12-том со счётчиком как? Не будете использовать тип поля?

:-)
Ну до 12 го ещё мне долго...надо тестировать ....исследовать и т.д.
Я работаю с sqlite (для андроидов и небольших встраиваемых баз(например для фискального регистратора)
Так вот там тип автоинкрементное поле есть...и я его использую.
...
Рейтинг: 0 / 0
Источник для первичного ключа - триггер, это анахронизм?
    #39296140
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alНу до 12 го ещё мне долго
ну, а мен быстро. Я с сиквела пришёл. И долго не плевался что в оракле нужны какие то счётчики.
Только в 12-той до них как до жирафов дошло.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Источник для первичного ключа - триггер, это анахронизм?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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