IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

requete renvoyant la colonne réferencée par la clé étrangère


Sujet :

Développement SQL Server

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut requete renvoyant la colonne réferencée par la clé étrangère
    salut,

    J'ai deux tables en sql server 2005, l'une contient une clé étrangère référençant la clè primaire de l'autre.
    J'ai besoin d'une requete qui me renvoie toutes les informations sur les contraintes de la table, à savoir ses clefs primaires et étrangères, les noms des colonnes correspondantes et les colonnes de références des clefs étrangères.
    j'ai essayé cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * 
    FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE 
    WHERE 
    TABLE_NAME='NOM_TABLE'
    Mais cela ne m'affiche pas la colonne référencée par la clé étrangère.

    y a-t-il autre solution?

    Merci

    OS: windows XP

  2. #2
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Bonjour,

    Je pense qu'il faut aller voir au niveau de REFERENTIAL_CONSTRAINTS

    http://msdn.microsoft.com/en-us/libr...SQL.80%29.aspx

    Cordialement,

    Arkhena

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    merci pour la réponse, mais cela ne marche pas j'ai déjà utilisé des requetes sur :
    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
    et sur
    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
    et
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    mais ca ne donne pas la colonne réferencée par la clé étrangère
    je pense à une autre solution: utiliser les procédures stockées de sql server comme le cas de sp_columns nom_table qui retourne les colonnes d'une table
    y a-t-il une procédure stockée qui retourne les informations sur les contraintes d'une table.
    Je m'explique, je veux afficher les noms des tables, les contraintes et leurs types (clé primaire ou étrangère) et le nom de la colonne référencée dans le cas d'une clé étrangère....etc

    J'espère que je me suis faite comprendre.

    merci d'avance



  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 26
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT 
        f.name AS foreign_key_name
       ,OBJECT_NAME(f.parent_object_id) AS table_name
       ,COL_NAME(fc.parent_object_id, fc.parent_column_id) AS constraint_column_name
       ,OBJECT_NAME (f.referenced_object_id) AS referenced_object
       ,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS referenced_column_name
       ,is_disabled
       ,delete_referential_action_desc
       ,update_referential_action_desc
    FROM sys.foreign_keys AS f
    INNER JOIN sys.foreign_key_columns AS fc
    	ON f.object_id = fc.constraint_object_id
    Il est néanmoins préférable de passer par les vues du schéma INFORMATION_SCHEMA, mais je ne me suis pas penché sur la question ...

    Cordialement

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    Bonjour,

    Merci pour votre aide Oxiane, mais il me sort l'erreur suivante:


    Msg 208, Niveau 16, État 1, Ligne 1
    'sys.foreign_keys' : nom d'objet incorrect.
    Msg 208, Niveau 16, État 1, Ligne 1
    'sys.foreign_key_columns' : nom d'objet incorrect.

    Savez- vous pourquoi?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 26
    Par défaut
    Bonjour,


    vous êtes bien en SQL 2005 ? Pas en 2000 ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    Oui, je suis bien en SQLServer 2005 et non 2000.

  8. #8
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Peut être que ce billet peut vous aider

    Si vous êtes sous SQL Server 2005 les vues système sys.foreign_keys et sys.foreign_key_columns existent.
    Le contraire prouve que vous travaillez sous SQL Server 2000.
    Le code que je vous propose dans mon billet fonctionnera sous SQL Server 2005 et 2008, mais pas sous SQL Server 2000.

    @++

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    Merci pour le billet, je crois que je vais en avoir besoin.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/07/2010, 13h30
  2. Résultat de requete en colonne (mois par mois)
    Par lodan dans le forum Requêtes
    Réponses: 11
    Dernier message: 13/02/2008, 19h53
  3. Réponses: 5
    Dernier message: 27/06/2006, 21h27
  4. requete vers une colonne de type datetime
    Par Zorgz dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/12/2003, 13h37
  5. Delphi7 winxp pro renvoyer un TLabel connu par nom
    Par regis1_1 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/06/2003, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo