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 :

Comment savoir si une contrainte est active ou non.


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 64
    Points : 46
    Points
    46
    Par défaut Comment savoir si une contrainte est active ou non.
    Bonjour,
    Je souhaiterais lister les contraintes d'une table et savoir si elles sont actives ou non.
    Je sais que les tables sysforeignkeys et sysobjects permettent d'obtenir des informations sur les contraintes mais je ne trouve pas de champs correspondant à l'état de l'objet.
    Quelqu'un saurait-il m'éclairer ?

  2. #2
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    En utilisant les vues :
    sys.check_constraints
    sys.default_constraints
    sys.key_constraints
    sys.foreign_keys

    Il y a une colonne IsDisable permettant d'identifier le status de la contrainte.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 64
    Points : 46
    Points
    46
    Par défaut
    OK merci Ptit_Dje.
    J'obtiens mon information avec le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select sys.foreign_keys.name, sys.foreign_keys.is_disabled
    from sys.foreign_keys, sysobjects
    where sys.foreign_keys.parent_object_id = sysobjects.id
    and sysobjects.name = :pNOMTABLE

  4. #4
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    le :pNOMTABLE me fait penser à de l'Oracle ...
    Écrivez plutôt vos jointures comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT FK.name,
    	FK.is_disabled,
    FROM sys.foreign_keys AS FK
    JOIN sys.objects AS O
    	ON FK.parent_object_id = O.id
    	AND O.name = @NOMTABLE
    @++

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

Discussions similaires

  1. Comment savoir si une feuille est active ?
    Par gryffondor8392 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/05/2011, 11h25
  2. Comment savoir si une connexion est deja ouverte?
    Par ghor_bey dans le forum Web & réseau
    Réponses: 3
    Dernier message: 29/07/2005, 15h17
  3. Réponses: 6
    Dernier message: 01/07/2005, 15h06
  4. Comment savoir si une variable est initialisée ?
    Par nabix dans le forum Général Python
    Réponses: 8
    Dernier message: 10/03/2005, 15h12
  5. Comment savoir qu'une fonction est standard ?
    Par D[r]eadLock dans le forum C
    Réponses: 5
    Dernier message: 24/03/2003, 14h42

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