J'ai une Object
table qui est remplie à partir d'un service intégré ( que je peux changer si nécessaire ) d'une autre base de données. À certains moments, nous devons ajouter manuellement des publications dans une autre table, ObjectObjectGroup (ObjectId, ObjectGroupId)
ce qui est nécessaire si elles Object.ObjectType
ont une certaine valeur entière. Étant donné que le service d'intégration ne gère pas ce type de mise à jour, je pense à ajouter un déclencheur à la table Object qui, en pseudo-code, serait le suivant:
if Object.ObjectType = 10
begin
if Object.ObjectNumber like '<string pattern>'
begin
insert into ObjectObjectGroup values...
end
end
Cette configuration est-elle judicieuse ou existe-t-il une meilleure solution en termes de performances?
la source
Les déclencheurs sont un outil puissant et, comme tout autre outil, vous devez être prudent lorsque vous les utilisez.
Lorsque vous faites une erreur dans un déclencheur, les choses peuvent mal tourner drastiquement et à moins que vous exécutiez des traces, vous ne vous en rendrez pas compte ...
Ils modifient / insèrent / suppriment «par magie» des données que l'utilisateur de la base de données (l'application actuelle / toute application future / un développeur effectuant une mise à jour unique) n'a pas réalisé / prévu.
Le gros problème est qu'après avoir créé le déclencheur, il n'est pas évident pour les autres développeurs / utilisateurs qu'un déclencheur est même là et ce qu'il fait.
Cela dit, ils sont un excellent outil pour maintenir l'intégrité de vos données et pour un véritable audit des modifications.
Vous devez vous demander si la logique que vous souhaitez mettre dans le déclencheur correspond le mieux aux applications ou à la base de données, en pesant les risques des deux côtés (que se passe-t-il si une nouvelle application arrive et ne l'applique pas) règle?)
la source