powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / О правильном использовании триггеров
10 сообщений из 10, страница 1 из 1
О правильном использовании триггеров
    #40018644
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Было много написано о вреде триггеров.

Медленные, плохо понятные зависимости, дедлоки, и т.д.

Вместо триггеров часто рекомендуют написать API на таком же pl/sql, который будет делать то же самое, только теперь к таблицам надо доступаться через API а не через операции SQL. И версий этих API может быть много:
InsertRowAndUpdateTotals()
InsertRowAndUpdateTotalsEx()
InsertTwoRowsAndUpdateTotals()
....и часто без документации.

Как наши умудрённые опытом форумчане относятся к использованию триггеров в своих проектах?
Избегают любой ценой как клятого goto, или выработали правила их разумного применения?

Я заметил в своем проекте триггеры стоят не на таблицах, а только на некоторых представлениях. Не знаю, популярный ли это прием, но он устраняет или по крайней мере ослабляет многие доводы против использования триггеров.
Такое представление становится объектом-интерфейсом, который поддерживает стандартные методы sql и реализует малую толику бизнес логики.

А к таблицам остаётся нефильтрованый доступ если надо.
...
Рейтинг: 0 / 0
О правильном использовании триггеров
    #40018650
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
О правильном использовании триггеров
    #40018652
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яндекс-Дзен?
...
Рейтинг: 0 / 0
О правильном использовании триггеров
    #40018654
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

Триггеры необходимо использовать разумно и там, где без них не обойтись.
Навскидку, это операции логгирования изменений, общие операции с данными таблицы, которые могут меняться со 100500 процедур/интерфейсов, отправка сообщений в очередь и т.д.

Медленные - да. За все нужно платить.
Плохо понятные зависимости - compound + минимум логики, которую нецелесообразно менять на использование по другому подходу.
Дедлоки - навскидку не вспомню ситуаций, когда дедлок был вызван триггером. Если дедлок происходит - то он произойдет и в том случае, если код триггера вынести в отдельную процедуру. И напрямую это зависит от предыдущего пункта.
...
Рейтинг: 0 / 0
О правильном использовании триггеров
    #40018666
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

я за использование триггеров (как и goto)

.....
stax
...
Рейтинг: 0 / 0
О правильном использовании триггеров
    #40018671
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

И goto в триггерах, как особый цинизм.
...
Рейтинг: 0 / 0
О правильном использовании триггеров
    #40019035
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Amberit
НеофитSQL,

Триггеры необходимо использовать разумно и там, где без них не обойтись.
Навскидку, это операции логгирования изменений, общие операции с данными таблицы, которые могут меняться со 100500 процедур/интерфейсов, отправка сообщений в очередь и т.д.

Медленные - да. За все нужно платить.
Плохо понятные зависимости - compound + минимум логики, которую нецелесообразно менять на использование по другому подходу.
Дедлоки - навскидку не вспомню ситуаций, когда дедлок был вызван триггером. Если дедлок происходит - то он произойдет и в том случае, если код триггера вынести в отдельную процедуру. И напрямую это зависит от предыдущего пункта.


С логгированием и отправкой сообщений в очередь понятно - видел такое в работе, и это действия которые должны осуществляться за короткое предсказуеморе время (хорошее общее правило для кода в триггерах, как и для кода прерываний: минимум задержек, нежелательность ожиданий на общих ресурсах).

> общие операции с данными таблицы
А какой был бы хороший и нередкий пример здесь - проверка данных? Обновление статистики?
...
Рейтинг: 0 / 0
О правильном использовании триггеров
    #40020458
Фотография Amberit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА какой был бы хороший и нередкий пример здесь - проверка данных? Обновление статистики?
Проверка данных - да, с учетом того факта, что преимущественно используются констрейнты, а потом уже триггера.
Обновление статистики - точно нет. Для этих целей используются материализованные представления или самописные велосипеды.
...
Рейтинг: 0 / 0
О правильном использовании триггеров
    #40020470
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть legacy системы, где без триггеров или фиг что сделаешь, или сделаешь значительно с большими затратами

AFAIK
...
Рейтинг: 0 / 0
О правильном использовании триггеров
    #40020477
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Механизм identity в оракле появился не так давно. До этого автогенерацию ключа делали через триггер.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / О правильном использовании триггеров
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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