Je sais que vous posez des questions sur SQL Server, mais dans le monde Oracle (dans le passé), les tables temporaires avaient un coût très élevé, donc les procédures et les déclencheurs basés sur le curseur étaient plus rapides et plus «économiques» pour le serveur. Dans SQL Server, les curseurs avaient un coût beaucoup plus élevé que les tables temporaires, il était donc déconseillé d'écrire du code basé sur le curseur. Je suis presque sûr que ces écarts ont été éliminés au cours de la dernière décennie.
Pour faire face à ces situations, la plupart des gens ont une règle générale pour éviter de mettre la logique métier dans la base de données. Si vous pouvez absolument toujours le faire, alors il n'y aura aucune raison de logique procédurale dans T-SQL ni PL / SQL. Les bases de données relationnelles sont excellentes dans la logique basée sur les ensembles. La plupart des langages de programmation modernes sont parfaits pour la logique procédurale. Il est préférable d'utiliser chacun pour quoi il est bon.
Certains déclencheurs d'audit avec lesquels j'ai travaillé avaient des règles assez compliquées pour ce qui devait être vérifié et où les choses devaient être mises à jour / enregistrées. Certains étaient pour garder les systèmes de rapports synchronisés avec les systèmes transactionnels (ce n'était pas mon choix, mais ils le voulaient de cette façon). Certains étaient pour un système de formulaire . Un formulaire est une liste de médicaments, et pour chaque compagnie d'assurance, ce qu'ils couvriront / ne couvriront pas et, si prescrit drug_X, quels remplacements sont couverts par l'assurance. Il était également courant que différentes polices collectives d'une même compagnie d'assurance paient des médicaments différents.