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

MS SQL Server Discussion :

Trouver dependances et contraintes d'une colonne


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 1
    Par défaut Trouver dependances et contraintes d'une colonne
    Bonjour,

    Je souhaiterais supprimer une colonne en utilisant du code. J'ai donc utilisé la syntaxe suivante : ALTER TABLE Nom_Table DROP Column Nom_Colonne.

    Par contre, cela ne marche pas s'il y a des dépendance fonctionnelle appliqué à la colonne comme des valeurs par défaut. Je sais qu'il faut utiliser la syntaxe suivante : ALTER TABLE Nom_Table DROP CONSTRAINT Nom_Contrainte.

    Mais le problème, c'est que je n'arrive pas à trouver les contraintes appliqués à la colonne. J'ai trouvé une éventuelle solution mais je suis pas sur que ca soit toujours bon.
    Ca consiste à rechercher toutes les objets dépendant d'une table (colonne parent_obj) et en utilisant la colonne info de sysobjects (qui semble servir à stocker l'id de la colonne) et en faisant une restriction sur le type de l'objet recherché (ici 'D' pour la valeur par défaut) :


    SELECT sysobjects.name
    FROM sysobjects INNER JOIN
    (
    SELECT syscolumns.id ,colid
    FROM dbo.syscolumns
    INNER JOIN sysobjects On syscolumns.id = sysobjects.id
    INNER JOIN systypes On syscolumns.xtype = systypes.xusertype
    WHERE syscolumns.name = 'NumTickettmp'
    AND sysobjects.name = 'ImportsVentes'
    AND sysobjects.xtype='U'
    ) as TableColonne
    ON TableColonne.id = sysobjects.parent_obj
    AND TableColonne.colid = sysobjects.info
    WHERE xType = 'D'

    Quelqu'un peut il me dire si cela est la meilleure solution et si c'est sur à 100%. Ou bien m'indiquer s'il y a des procédures système pour effacer une colonne et toutes ses dépendances d'un seul coup ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Par défaut
    Ton post m'intéresse aussi !!



    Pour matter les contraintes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * 
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
    WHERE TABLE_NAME = 'matable'
    Tout en remplaçant 'matable' par le nom de ta table !!!

    J'ai réussi à choper ça :

    NOCHECK CONSTRAINT

    matte ici :
    http://sqlserver.developpez.com/faq/?page=Prg#Prg2

    j'ai trouvé ça aussi :

    http://groups.google.ch/group/micros...11ed7309224612

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/01/2010, 14h28
  2. [SQL2K][TSQL] Trouver les indexs portant sur une colonne
    Par maitrebn dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 29/08/2006, 23h09
  3. [C# 2.0] Suspendre une contrainte sur une colonne
    Par frechy dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/04/2006, 07h47
  4. SQLServer 2000: Liste des contraintes sur une colonne ?
    Par swirtel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/11/2005, 16h13
  5. retrouver les contraintes sur une colonne
    Par kalari dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 18/10/2005, 17h03

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