Impossible de tronquer la table parce qu'il est référencé par une contrainte de CLÉ ÉTRANGÈRE
Je reçois le message suivant, même lorsque la table qui y fait référence est vide: "Impossible de tronquer la table" dbo.Lien", car il est référencé par une contrainte de CLÉ ÉTRANGÈRE" Ne semble pas faire beaucoup de sens pourquoi cela se produit. Des suggestions?
Vous devez vous connecter pour publier un commentaire.
Dans SQL Server une table référencée par un FK ne peut actuellement pas être tronquée, même si tous font référence à des tables sont vides ou à l'étranger, les touches sont désactivées.
Vous devez utiliser
DELETE
(qui peut être beaucoup plus d'enregistrement) ou de baisse de la relation(s) avant l'utilisation de laTRUNCATE
et les recréer par la suite ou voir les solutions de contournement sur cet élément de connexion pour un moyen de réaliser cela à l'aide deALTER TABLE ... SWITCH
Vous ne pouvez pas tronquer une table qui a un FK contrainte. Comme solution de contournement, vous pouvez:
1/Déposer les contraintes
2/Trunc la table
3/Recréer les contraintes.
Ici, c'est l'associé script T-SQL, en supposant que vous avez 2 tables appelé MyTable et MyReferencedTable:
Exécuter la requête suivante à la recherche d'une quelconque contrainte:
Si aucune contrainte trouvé sur votre table, le supprimer.
Si vous recevez cette erreur, et vous avez besoin de tronquer la table, alors l'autre solution pourrait être que vous pouvez supprimer et recréer la table avec
primary/other_keys/indexes/triggers
. Assurez-vous que vous n'avez pas besoin de données dans cette table.Ce soulution se porte comme un charme pour moi et à peine pris une minute pour terminer. Je le fais pour le masquage but.
Au lieu de la supprimer ou de la recréation de la contrainte, je préfère ce moyen plus simple.
Désactiver la contrainte de validation par l'exécution de la requête suivante en premier :
Truncate vos tables
Et enfin, de réactiver la contrainte de validation :
C'est une solution commune lors de la migration de bases de données, de sorte que vous n'avez pas à vous soucier de l'ordre les tables sont insérées dans.