In my experience, they are not a good idea because they can result in surprising side effects, and are difficult to debug (especially when one trigger fires another). Often developers do not even think of looking if there is a trigger.
On the other hand, if you have logic that must occur every time a new FOO is created in the database, then it may be the most foolproof place to put it is an insert trigger on the FOO table.
The only time we’re using triggers is for really simple things like setting the modified date field of a row.
I’m struggling to figure out whether triggers are necessary and would appreciate any input. If they are necessary, what are the most important issues to consider when implementing them?
The main problems with triggers are
This just means they need to be carefully used for the proper circumstances; which in my experience is limited to relational integrity issues (sometimes with finer granularity than you can get declaratively); and usually not for business or transactional purposes. YMMV.