Я знаю, что вы спрашиваете о SQL Server, но в мире Oracle (в прошлом) временные таблицы стоили очень дорого, поэтому процедуры и триггеры на основе курсоров были быстрее и дешевле для сервера. В SQL Server стоимость курсоров была намного выше, чем у временных таблиц, поэтому написание кода на основе курсоров не поощрялось. Я почти уверен, что эти несоответствия были устранены в последнее десятилетие.
Чтобы справиться с этими ситуациями, у большинства людей есть общее правило, позволяющее избегать помещения бизнес-логики в базу данных. Если вы можете абсолютно всегда это делать, то не будет никаких причин для процедурной логики ни в T-SQL, ни в PL / SQL. Реляционные базы данных хороши в основанной на множестве логике. Большинство современных языков программирования хороши в процедурной логике. Лучше всего использовать каждый для того, в чем они хороши.
Некоторые триггеры аудита, с которыми я работал, имели довольно сложные правила для того, что нужно проверять и где что-то нужно обновлять / регистрировать. Некоторые были для синхронизации систем отчетности с транзакционными системами (это был не мой выбор, но они хотели этого). Некоторые были за формулярную систему. Формуляр - это список лекарств, и для каждой страховой компании, что они будут покрывать / не покрывать, и если назначено лекарство_X, какие замены покрываются страховкой. Кроме того, для разных групповых полисов в одной и той же страховой компании характерно платить за разные лекарства.