2009-06-15 10 views
6

Actuellement Dans notre conception de base de données, nous avons une référence circulaire entre deux entités. En d'autres termes, nous avons des clés étrangères dans chaque table qui référencent la clé primaire de l'autre. Pour insérer des enregistrements dans ces tables, nous devons effectuer une vérification de contrainte différée. Est-ce possible dans SQL Server 2008? Je sais que Oracle DDL a une syntaxe spéciale pour cela.vérification de contrainte différée

Répondre

7

Il n'existe aucune méthode native pour effectuer une vérification de contrainte différée dans SQL Server. La meilleure option consiste probablement à insérer une valeur NULL dans la colonne de clé étrangère dans la première table jusqu'à ce que le deuxième enregistrement soit inséré, puis dans le cadre de la même transaction, mettre à jour la colonne de clé étrangère dans la première table.

Je suis intéressé - quelle est la raison commerciale de votre référence circulaire? C'est définitivement une exigence extraordinaire.

Jetez également un oeil à this thread, sur le même sujet.

+1

@Aaron. Nous avons une référence récursive entre les synonimes du même produit. –

+0

@Igor: Alors probablement ce que vous voulez est de stocker le nom du produit dans une table séparée, avec une relation un-à-plusieurs entre les informations sur le produit et les noms de produits. La vérification des consignes différées serait très utile dans les cas où vous voulez échanger ou réorganiser une clé unique, par exemple (comme une colonne * "Ordering" *) –

Questions connexes