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é :
Mais ça marche pas car il me dis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER TABLE societes ALTER COLUMN id_soc char(100)
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 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.
Mais voilà même avec les NOCHECK CONSTRAINT
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 !'
il me balance toujours le même message d'erreur quand je retapeDonc pourquoi sql serveur ne prend pas en compte mes NOCHECK ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER TABLE societes ALTER COLUMN id_soc char(100)
svp aidez moi
Partager