Нет, они на самом деле хорошая идея. Если есть проблема с вашими определенными триггерами, то вы делаете их неправильно, но обычно это означает, что есть проблема с вашей реализацией, а не с концепцией самих триггеров :-).
Мы много используем триггеры, потому что они помещают специфическую для СУБД деятельность под контроль той базы данных, которой она принадлежит. Пользователи СУБД не должны беспокоиться о подобных вещах. Целостность данных зависит от самой базы данных, а не от приложений или пользователей, которые ее используют. Без ограничений, триггеров и других функций в базе данных, приложения оставляют за собой право применять правила, и для уничтожения данных требуется всего одно мошенническое или ошибочное приложение / пользователь.
Например, без триггеров не было бы таких удивительных вещей, как автоматически сгенерированные столбцы, и вам пришлось бы обрабатывать функцию в каждой строке при их выборе. Это может снизить производительность СУБД, гораздо лучше создать автоматически сгенерированный столбец во время вставки / обновления, поскольку это единственный раз, когда он изменяется.
Кроме того, отсутствие триггеров помешает применению правил данных в СУБД, таких как предварительные триггеры, для обеспечения того, чтобы столбцы имели определенный формат. Обратите внимание, что это отличается от правил целостности данных, которые обычно являются просто поисками внешнего ключа.