2008-10-30 7 views
5

J'ai essayé ceci:Comment supprimer un champ de la table SQLServer2005

ALTER TABLE My.Table DROP MyField 

et a obtenu cette erreur:

-MyField est pas une contrainte.

-Ne peut pas supprimer la contrainte. Voir les erreurs précédentes.

Il n'y a qu'une seule ligne de données dans la table et le champ vient d'être ajouté.

EDIT: Juste pour suivre, le sql manquait en effet COLUMN. Maintenant, je obtenir encore plus sérieusement à la recherche d'erreurs si:

  • L'objet « some_object__somenumbers » dépend de la colonne « MyField »
  • ALTER TABLE DROP COLUMN MyField a échoué en raison d'un ou plusieurs objets accéder à cette colonne.

EDIT:

ALTER TABLE TableName DROP Constraint ConstraintName 

a travaillé, après que j'ai pu utiliser le code précédent pour supprimer la colonne. Le mérite revient à vous deux, merci.

+0

Vous avez étiqueté ce 'mysql', mais la question dit SQLServer 2005. Pourriez-vous élaborer. –

+0

Mon erreur, devrait être mssql, mais quelqu'un l'a mis à jour déjà. – Maciej

Répondre

4

Brian permis de résoudre votre problème d'origine - pour votre nouveau problème (l'objet « » some_object__somenumbers dépend de la colonne « MyField ») cela signifie que vous avez un problème de dépendance. Quelque chose comme un indice, référence clé étrangère, la valeur par défaut, etc. Pour supprimer l'utilisation de la contrainte:

ALTER TABLE TableName DROP ConstraintName 

également - vous aurez besoin de laisser tomber toutes les contraintes qui dépendent de cette colonne avant qu'elle ne vous laisse tomber le colonne elle-même.

10

Je pense que vous manquez juste le mot-clé de la colonne:

ALTER TABLE TableName DROP COLUMN ColumnName 

Vous devrez également vous assurer que toute contrainte qui est en fonction de NomColonne tombe d'abord.

Vous pouvez le faire par:

ALTER TABLE TableName DROP ConstraintName 

Pour chaque contrainte que vous avez.

Si vous avez des index basés sur la colonne, vous devrez également supprimer ces index en premier.

DROP INDEX TableName.IndexName 
0
ALTER TABLE TABLE_NAME ADD COLUMN SR_NO INTEGER(10)NOT NULL; 
Questions connexes