When it comes to denormalizing data in a transactional database for performance, there are (at least) three different approaches:
Push updates through stored pr
Triggers are useful where you multiple update paths on a table.
We use stored procs and have about 4 paths at least (Add, Update, Deactivate, Copy)
It's easier to work with the data we've just inserted/updated in a trigger no matter what action we do or how many rows we affect.
A stored proc works for a single update path only I feel: unless you want to repeat code...
Now, TRY/CATCH in triggers means correct, predictable error handling: triggers on SQL Server 2000 and earlier caused batch aborts on error/rollback which is not ideal (to say the least!). So, triggers are more reliable now anyway.