Problème récupération de la liste des relations entre deux tables
edge_man
Messages postés4Date d'inscriptionmercredi 25 janvier 2006StatutMembreDernière intervention 7 août 2008
-
7 août 2008 à 10:35
SQLpro
Messages postés35Date d'inscriptionsamedi 17 novembre 2007StatutMembreDernière intervention 8 février 2012
-
21 août 2008 à 15:55
Bonjour,
dans une application que je suis entrain de développer, j'ai besoin de
récupérer la liste des relations entre les tables d'une base de données
sql server.
Pour ce faire, j'utilise les classes 'Table', 'TableCollection' et les
champs 'ForeignKeys'(classe 'Table'), 'referencedTable'(classe 'Table')
et 'fkColumn' (classe 'ForeignKeyColumn').
(Tout ces éléments étant présent dans la librairie 'Microsoft.SqlServer.Management.Smo').
Pour cela pas de problèmes, je récupère toutes les relations
correctement. Le problème, vient en fait que certaines relations dans
ma base de données sont traitées par des Triggers. Et là ça se corse
sérieusement. Il y a bien sur le champs 'Triggers' (classe 'Table'),
mais dans les propriétés de celui-ci, je ne peux récupérer que le nom.
Or je voudrais pouvoir faire comme précédement, et donc récupérer, la
table sur lequel agit le trigger. Mais à ma connaissance, cet info
n'est stockée que dans le texte du trigger (le champs 'textBody' je
crois), et n'est donc pas exploitable.
Ma question est donc, y a-t-il un moyen de récupérer le nom de la table sur lequel agit un trigger d'une autre façon?
J'utilise sql server 2005, visual studio 2008, en C# avec le framework . NET 3.5.
Merci d'avance.
A voir également:
Problème récupération de la liste des relations entre deux tables
SQLpro
Messages postés35Date d'inscriptionsamedi 17 novembre 2007StatutMembreDernière intervention 8 février 20121 21 août 2008 à 15:55
Tout d'abord le terme "relation" est toptalement inaproprié. Il n'y a pas de relations entre les tables, les relation étant un objet mathématique proche de la notion de table. En revanche il existe des tables liées par des mécanismes d'intégrité référentielles dits "déclaratif" lorsque ce sont des contraintes de clefs étrangères. Lorsque l'on utilse des déclencheurs, alors on parle d'intégrité référentielle fonctionnelle.
Ma question est donc, y a-t-il un moyen de récupérer le nom de la table sur lequel agit un trigger d'une autre façon?
Non compte tenu de la complexité possible du code. Et c'est d'ailleurs assez mauvais que de gérer ses intégrités référentielles sous forme de déclencheur, sachant que le déclencheur rest l'outil qui est le plux couteux en terme de ressources de traitement de tous niveaux puisqu'il participe à la transaction.
A +
Frédéric BROUARD - SQLpro - MVP SQL Server
Spécialiste SQL, SGBDR, modéles de données
SQL & SGBDR http://sqlpro.developpez.com/ Expert SQL Server : http://www.sqlspot.com audits - optimisation - tuning - formatio