Мне кажется, что любые обновления согласованности / целостности уровня данных почти всегда должны обрабатываться триггером.
В прошлом мне говорили, что они могут снизить производительность, но я не уверен, при каких обстоятельствах. С одной стороны, я мог видеть увеличение конкуренции за блокировку, когда дальнейшие действия связаны между собой триггерами, но кажется, что совокупную производительность все же следует улучшить, уменьшив потребность в нескольких запросах в оба конца. Одним из контрпримеров будет протоколирование, которое лучше обрабатывать асинхронно за пределами критического пути приложения для повышения производительности. Также кажется, что не хотелось бы, чтобы в уровне данных реализовывалось слишком много алгоритмической сложности, специфичной для приложения.
Я прочитал документы , FAQs , Forum и другие сайты и стал свидетелем множества варианты использования, но не сталкивались с обсуждением лучших практик или анти-паттернов.
Существуют ли общие практические правила или конкретные случаи, когда триггеры не являются хорошей идеей?