Триггеры являются хорошим инструментом при надлежащем использовании. Expecially для вещей как аудит изменяются, заполнение таблиц реферирования, и т.д.
Теперь они могут быть "злыми", если Вы оказываетесь в "триггерном аду" с одним триггером, который начинает другие триггеры. Я когда-то работал над продуктом COTS, где они имели то, что они назвали "триггерами гибкого провода". Эти триггеры были сохранены в таблице, как динамические жала sql, были скомпилированы каждый время, они выполнялись. Скомпилированные триггеры привели бы в порядок взгляд и видели бы, имела ли та таблица какие-либо триггеры гибкого провода, чтобы выполнить и затем скомпилировать и выполнить триггер "гибкого провода". В теории это походило на действительно классную идею, потому что продукт был легко настроен, но действительность была базой данных, в значительной степени взорванной из-за всех компиляций, которые это должно было сделать...
Так да, они являются великими, если Вы сохраняете то, что Вы делаете в перспективе. Если это - что-то довольно простое как аудит, суммирование, автоупорядочивание, и т.д., никакой prob. Просто имейте в виду темп роста таблицы и как триггер повлияет на производительность.
Другое решение - установить высоту тела на 100% - см. Пример до / после на http://www.iecustomizer.com/msmvp/HTMLHeightTest.htm
Я использую следующее:
html {
height: 101%; /* setting height to 101% forces scroll bar to display */
}