Problème Microsoft SQL Server

Résolu
threadom
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007
- 2 juin 2006 à 16:29
threadom
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007
- 8 août 2006 à 09:17
Bonjour,

    Quelqu'un connaitrais t'il un moyen d'obtenir le nom de la contrainte automatiquement généré par SQL Server (2000-2005) lors d'un :

"ALTER TABLE MaBase.dbo.MaTable.MonChamp ADD MaColonne REAL DEFAULT 0"

Que ce soit en SQL ou en VB !

Ou alors encore mieux :D

Un moyen d'outrepasser cette contrainte lors de la suppression de la colonne :

"ALTER TABLE MaBase.dbo.MaTable.MonChamp DROP COLUMN MaColonne"

Afin de ne plus avoir l'erreur suivante :

Msg 5074, Niveau 16, État 1, Ligne 1
La objet 'DF__MaTable___MaCol__2C01B702' dépend de colonne 'MaColonne'.
Msg 4922, Niveau 16, État 9, Ligne 1
ALTER TABLE DROP COLUMN MaColonnea échoué car un ou plusieurs objets accèdent à cette colonne.

2 réponses

cs_skweeky
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Membre
Dernière intervention
11 janvier 2010
7
7 août 2006 à 21:39
Pour la liste des contraintes de type valeur par défaut :




SELECT







*



FROM


sysobjects


WHERE
xtype

=



'D'



AND
parent_obj

=



OBJECT_ID
(
'nom de la table'


)

Pour supprimer il faut d'abord enlever les contraintes... Je sais c'est galère je suis aussi passé par là !

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
3
threadom
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

8 août 2006 à 09:17
Salut, j'ai procédé en 3 temps.

1) Je récupère le nom des contraintes :

SELECT DC.name
FROM SYS.DEFAULT_CONSTRAINTS DC, SYS.TABLES T, SYS.COLUMNS C
WHERE DC.parent_object_id = T.object_id
AND DC.parent_column_id = C.column_id
AND T.name = <Table_Name>
AND C.name = <Column_Name>
AND C.object_id = T.object_id;

2) J'efface les contraintes :

ALTER TABLE <Column_Name> DROP CONSTRAINT <Constraint_Name>

3) Et après j'efface ma colonne

C'est un peu plus lourd mais bon ca a l'air de marché !
3