2010-03-08 7 views
0

Nous avons deux tables dans une base de données SQL Server 2005, A et B. Il existe un service qui tronque la table A tous les jours. Récemment, une contrainte de clé étrangère a été ajoutée à la table B, référençant la table A. En conséquence, il n'est plus possible de tronquer la table A, même si la table B est vide. Y a-t-il une solution de contournement pour obtenir le même résultat que tronquer la table A?Tronquer une table référencée par une clé étrangère

J'ai déjà essayé l'approche ci-dessous mais l'identité n'a pas été réinitialisée.

DBCC CHECKIDENT (TABLENAME, RESEED, 0) 

PS. avant que quelqu'un pointe cela comme un doublon, la chose différente ici est que je ne suis pas autorisé à abandonner des contraintes, ni à en créer.

Répondre

1

Si vous ne pouvez pas supprimer la contrainte, vous ne pouvez pas utiliser TRUNCATE TABLE, vous devez donc utiliser DELETE.

DELETE TABLEA 
DBCC CHECKIDENT (TABLENAME, RESEED, 0) 

Note: La désactivation de la FK ne fonctionnera pas non plus

+0

Je suppose que le problème était DELETE FROM TABLEA au lieu de DELETE TABLEA. Lame erreur, merci pour votre aide. –

+1

@born à hula: ce sont les mêmes: FROM est facultatif .... – gbn

+0

Je ne sais pas ce que je faisais mal, alors. De toute façon, ça marche maintenant. –

0

Si vous souhaitez tronquer une table référencée dans une contrainte de clé étrangère

1-DISABLE related FK 
2-TRUNCATE all related tables. 
3-ENABLE the previously disabled FKs 

SET FOREIGN_KEY_CHECKS = 0; -- Disable foreign key checking. 
TRUNCATE TABLE Table1; 
SET FOREIGN_KEY_CHECKS = 1; -- Enable foreign key checking. 
0

SET FOREIGN_KEY_CHECKS = 0; # MySQL a renvoyé un vide jeu de résultats (c'est-à-dire zéro rangée). - Désactiver la vérification de clé étrangère. TRUNCATE TABLE table_name; # MySQL a retourné un ensemble de résultats vide (c'est-à-dire zéro rangées). SET FOREIGN_KEY_CHECKS = 1; # MySQL a renvoyé un jeu de résultats vide (c'est-à-dire zéro rangée). - Activer la vérification des clés étrangères. # MySQL a renvoyé un jeu de résultats vide (c'est-à-dire zéro rangée).

+0

Way vieille question, de toute façon c'est lié à SQL Server plutôt qu'à MySQL. –

Questions connexes