Dans SQL Server 2008, j'ai un scénario dans lequel j'ai une table avec une validation complexe lors de l'insertion/mise à jour. Cela inclut la nécessité de convertir une entrée XML dans une table afin de valider ses données par rapport à une table permanente.Comportement des déclencheurs "AFTER INSERT, UPDATE" dans SQL Server
Cependant, j'ai aussi le scénario où je mettrai souvent à jour des colonnes entières simples qui ne nécessitent aucune validation. D'après ce que j'ai lu here, il semble que SQL Server va renvoyer la ligne entière dans la table «insérée» temp in-memory, pas seulement les colonnes affectées, lorsque j'effectue une mise à jour. Si tel est le cas, cela signifie que pour chaque mise à jour simple, une validation XML complexe sera effectuée inutilement. Est-ce que je comprends cela correctement et si oui, comment puis-je contourner ce manque d'insertions/mises à jour via un proc stocké?
Je viens de réaliser pourquoi je n'ai jamais utilisé de triggers et toujours utilisé des procédures stockées pour insérer/mettre à jour/supprimer. Il est tellement plus facile de dire "si @xml n'est pas null begin (valider) (update) end". – IamIC
@IanC: les déclencheurs ont leur raison d'être - mais ils ne sont pas la solution pour tout. Un proc stocké vous donne plus de contrôle - définitivement. –
Les déclencheurs sont horribles, horribles abominations des couches les plus profondes de l'enfer et devraient être évités comme la peste. Ils ont tendance à produire très difficile à trouver/corriger/corriger les bogues. –