2011-03-02 1 views
4

J'ai une table dans SQL Server 2005 avec une clé étrangère et il a été bloquantes pour énorme chargement de données, puis réactivées:Comment revérifier la contrainte de clé primaire/étrangère pour les données déjà dans la table dans le serveur sql?

Exemple:

alter table table1 nocheck constraint fk_1 
go 
lots of inserts... 
go 
alter table table1 check constraint fk_1 
go 

Maintenant, la question suivante: est-il façon de re-vérifier ces données simplement insérées?

Répondre

8

La syntaxe semble un peu stupide avec le mot « chèque » répété, mais ce que vous voulez est:

alter table table1 with check check constraint fk_1 
go 

Ajout de l'option « avec chèque » validera les données existantes contre la contrainte. Cela empêchera également la contrainte de devenir untrusted.

Si les données existantes viole la contrainte, vous obtiendrez une erreur qui ressemblera à ceci:

The ALTER TABLE statement conflicted with the CHECK constraint "fk_1". 
+0

Merci beaucoup! Travaillé comme un charme! –

+0

+1 pour le point concernant les contraintes non approuvées. Ce n'est presque jamais une bonne idée d'activer les contraintes en utilisant WITH CHECK. Toujours utiliser AVEC VÉRIFICATION DE VÉRIFICATION. C'est une syntaxe stupide mais ça fait toute la différence. – sqlvogel

Questions connexes