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 :

ALTER imposible à cause des FK


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 15
    Points
    15
    Par défaut ALTER imposible à cause des FK
    Bonjours,
    J'ai table Societes et je voudrais changer la longeur max de son ID
    En gros :
    Actuellement j'ai id_soc char(6) et j'aimerais augmenter son char jusqu'a 100.
    Donc dans un premiére temps j'ai tappé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE societes ALTER COLUMN id_soc char(100)
    Mais ça marche pas car il me dis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Serveur*: Msg 5074, Niveau 16, État 8, Ligne 1
    Le objet 'PK_societes1' dépend du colonne 'id_soc'.
    Serveur*: Msg 5074, Niveau 16, État 1, Ligne 1
    Le objet 'FK__operation__id_cl__43D61337' dépend du colonne 'id_soc'.
    Serveur*: Msg 5074, Niveau 16, État 1, Ligne 1
    Le objet 'FK__operation__id_en__42E1EEFE' dépend du colonne 'id_soc'.
    Serveur*: Msg 5074, Niveau 16, État 1, Ligne 1
    Le objet 'FK__utilisate__id_so__40058253' dépend du colonne 'id_soc'.
    Serveur*: Msg 5074, Niveau 16, État 1, Ligne 1
    Le objet 'FK__interv_op__id_in__625A9A57' dépend du colonne 'id_soc'.
    Serveur*: Msg 5074, Niveau 16, État 1, Ligne 1
    Le objet 'FK__intervent__id_in__5F7E2DAC' dépend du colonne 'id_soc'.
    Serveur*: Msg 4922, Niveau 16, État 1, Ligne 1
    ALTER TABLE ALTER COLUMN id_soc ont échoué car un ou plusieurs objets ont accès à cette colonne.
    Donc j'ai décidé de désactiver tous les FK en tappant ce petit script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    -- Déclaration de la variable qui va contenir les requetes à exécuter
    Declare @Requete VarChar(1000)
    -- Déclaration du curseur qui va contenir pour chaque FK, une requete de désactivation
    Declare Cur_Contrainte Cursor For
    select 'ALTER TABLE ' + t.name + ' NOCHECK CONSTRAINT ' + fk.name
    from sysobjects fk, sysobjects t
    where fk.type='F' and fk.parent_obj=t.id or (t.xtype = 'PK' and T.xtype = 'U')
    order by t.name
    Open Cur_Contrainte
     
    -- Boucle sur le curseur et exécution des requetes
    Print 'Désactivation des contraintes en cours, Patience ....'
    Fetch Next From Cur_Contrainte Into @Requete
    	While @@Fetch_Status = 0
    	Begin
    		 -- Possibiliter d'afficher les requetes exécutées en supprimant le commentaire ci dessous
    		Print @Requete
    		Execute (@Requete)
    		Fetch Next From Cur_Contrainte Into @Requete
    	End
    -- Fermeture du curseur et libération des ressources
    Close Cur_Contrainte
    Deallocate Cur_Contrainte
    Print 'Désactivation des contraintes terminée !'
    Mais voilà même avec les NOCHECK CONSTRAINT
    il me balance toujours le même message d'erreur quand je retape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE societes ALTER COLUMN id_soc char(100)
    Donc pourquoi sql serveur ne prend pas en compte mes NOCHECK ?
    svp aidez moi

  2. #2
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 990
    Points
    2 990
    Par défaut
    As-tu beaucoup de FK ? Si pas autant supprimer les contraintes, faire ta modification et les recréer ensuite...
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    C'est ce que je pensais faire si je n'avais aucune réponse avant 14h00.
    Mais se qui m'inquiéte, c'est que j'ai peur que ça merde sur le serveur de production.
    C'est pas mon projet, je suis juste là pour y apporter des corrections donc je sais pas trop comment le cœur de l'application a été conçu, c'est pour ça que je préfére mille fois desactiver/reactiver que supprimer/recréer

    Si c'était moi qui avait conçut la BD, je l'aurais fais sans me poser de question mais là...

Discussions similaires

  1. problème à cause des sessions
    Par polo42 dans le forum Langage
    Réponses: 5
    Dernier message: 04/10/2006, 10h49
  2. Réponses: 42
    Dernier message: 04/08/2006, 23h36
  3. #include bidirectionnel cause des problèmes
    Par matrox dans le forum C++
    Réponses: 4
    Dernier message: 21/06/2006, 16h46
  4. [VB6]Problème dajout dans une Table Access à cause des group
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/02/2006, 10h06
  5. Problème d'addition à cause des NULL
    Par Oluha dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/03/2005, 13h53

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