7
votes

Impossible de supprimer la contrainte dans SQL Server 2005 "Impossible de supprimer la contrainte. Voir les erreurs précédentes"

J'essaie de laisser tomber une contrainte sur une table de dB, quelque chose comme: xxx

mais l'exécution fonctionne et fonctionne simplement. Si je l'arrête, je vois: xxx

la recherche Web jette différentes pages, mais notez que la contrainte est correctement nommée et j'essaie de le supprimer à l'aide du nom correct


0 commentaires

4 Réponses :


1
votes

Vérifiez que vous n'avez pas déjà laissé tomber la contrainte, comme: xxx

si cela renvoie null , votre contrainte n'existe plus. Cela expliquerait le message d'erreur.


3 commentaires

Non, la contrainte n'a pas encore été supprimée, j'ai essayé votre méthode ainsi que d'autres et il existe toujours toujours. Cela m'empêchera également de laisser tomber la colonne associée


@Dannykpowell: qu'est-ce que objet_id ('fk_mytable_anothertable', 'f') affiche?


Voir ma réponse, avez triée en désactivant la contrainte d'abord - merci pour votre réponse @andomar



2
votes

a trouvé un moyen de trier cela, même si je ne comprends pas pourquoi il était nécessaire.

a été capable de laisser tomber la contrainte en le désactivant d'abord: P>

ALTER MyTable NOCHECK CONSTRAINT FK_MyTable_AnotherTable


1 commentaires

Je veux supprimer une colonne qui n'est ni primaire ni la clé étrangère, je reçois la même erreur, j'ai essayé votre solution mais cela n'a pas fonctionné. des idées ?



4
votes

J'avais le même problème sur SQL Server 2008 R2 STROND>, j'ai résolu mon problème avec la ligne ci-dessous, j'espère que cela fonctionnera également pour quelqu'un d'autre aussi :)

    Alter Table [Table Name]
    DROP Column [Column Name]


2 commentaires

Puis-je connaître la raison pour donner mon ANS -1? Je serai heureux si tu me corrigees.


J'espère que vous avez déjà eu la réponse pour votre pourquoi. Je ne pense pas que le propriétaire du fil veuille déposer une colonne, il veut juste tomber la clé étrangère (peut-être changer la définition de la colonne)



0
votes

J'ai eu le même problème.

La raison en était que j'ai commis une erreur dans ma déclaration de curseur, qui itérant une certaine contrainte que je devais abandonner. Donc, cette erreur s'est produite lorsque la contrainte était en réalité retirée dans la même transaction . Ensuite, j'ai fait une rollback et vérifié s'il existait: il a fait (bien sûr, après la restauration!).

Vérifiez si cela existe vraiment au moment de la chute.


0 commentaires