|
О правильном использовании триггеров
|
|||
---|---|---|---|
#18+
Было много написано о вреде триггеров. Медленные, плохо понятные зависимости, дедлоки, и т.д. Вместо триггеров часто рекомендуют написать API на таком же pl/sql, который будет делать то же самое, только теперь к таблицам надо доступаться через API а не через операции SQL. И версий этих API может быть много: InsertRowAndUpdateTotals() InsertRowAndUpdateTotalsEx() InsertTwoRowsAndUpdateTotals() ....и часто без документации. Как наши умудрённые опытом форумчане относятся к использованию триггеров в своих проектах? Избегают любой ценой как клятого goto, или выработали правила их разумного применения? Я заметил в своем проекте триггеры стоят не на таблицах, а только на некоторых представлениях. Не знаю, популярный ли это прием, но он устраняет или по крайней мере ослабляет многие доводы против использования триггеров. Такое представление становится объектом-интерфейсом, который поддерживает стандартные методы sql и реализует малую толику бизнес логики. А к таблицам остаётся нефильтрованый доступ если надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 06:23 |
|
О правильном использовании триггеров
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 07:46 |
|
О правильном использовании триггеров
|
|||
---|---|---|---|
#18+
Яндекс-Дзен? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 08:02 |
|
О правильном использовании триггеров
|
|||
---|---|---|---|
#18+
НеофитSQL, Триггеры необходимо использовать разумно и там, где без них не обойтись. Навскидку, это операции логгирования изменений, общие операции с данными таблицы, которые могут меняться со 100500 процедур/интерфейсов, отправка сообщений в очередь и т.д. Медленные - да. За все нужно платить. Плохо понятные зависимости - compound + минимум логики, которую нецелесообразно менять на использование по другому подходу. Дедлоки - навскидку не вспомню ситуаций, когда дедлок был вызван триггером. Если дедлок происходит - то он произойдет и в том случае, если код триггера вынести в отдельную процедуру. И напрямую это зависит от предыдущего пункта. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 08:30 |
|
О правильном использовании триггеров
|
|||
---|---|---|---|
#18+
НеофитSQL, я за использование триггеров (как и goto) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 09:47 |
|
О правильном использовании триггеров
|
|||
---|---|---|---|
#18+
Stax, И goto в триггерах, как особый цинизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 09:57 |
|
О правильном использовании триггеров
|
|||
---|---|---|---|
#18+
Amberit НеофитSQL, Триггеры необходимо использовать разумно и там, где без них не обойтись. Навскидку, это операции логгирования изменений, общие операции с данными таблицы, которые могут меняться со 100500 процедур/интерфейсов, отправка сообщений в очередь и т.д. Медленные - да. За все нужно платить. Плохо понятные зависимости - compound + минимум логики, которую нецелесообразно менять на использование по другому подходу. Дедлоки - навскидку не вспомню ситуаций, когда дедлок был вызван триггером. Если дедлок происходит - то он произойдет и в том случае, если код триггера вынести в отдельную процедуру. И напрямую это зависит от предыдущего пункта. С логгированием и отправкой сообщений в очередь понятно - видел такое в работе, и это действия которые должны осуществляться за короткое предсказуеморе время (хорошее общее правило для кода в триггерах, как и для кода прерываний: минимум задержек, нежелательность ожиданий на общих ресурсах). > общие операции с данными таблицы А какой был бы хороший и нередкий пример здесь - проверка данных? Обновление статистики? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 18:28 |
|
О правильном использовании триггеров
|
|||
---|---|---|---|
#18+
авторА какой был бы хороший и нередкий пример здесь - проверка данных? Обновление статистики? Проверка данных - да, с учетом того факта, что преимущественно используются констрейнты, а потом уже триггера. Обновление статистики - точно нет. Для этих целей используются материализованные представления или самописные велосипеды. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 16:06 |
|
О правильном использовании триггеров
|
|||
---|---|---|---|
#18+
Есть legacy системы, где без триггеров или фиг что сделаешь, или сделаешь значительно с большими затратами AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 16:28 |
|
|
start [/forum/search_topic.php?author=frodo10&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
get settings: |
7ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
139ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 803ms |
total: | 1063ms |
0 / 0 |