Les versions de SQL Server antérieures à la 6.0 ne permettent pas de déclarer des relations de clé primaire et étrangère dans les définitions de table. Toute validation d'intégrité référentielle doit être effectuée par le biais de déclencheurs qu'il faut coder en T-SQL. SQL Server 6.0 a amené les contraintes,
Application de l’intégrité référentielle
y compris les contraintes de clé primaire et étrangère, mais limite les actions référentielles à NO ACTION. SQL Server 7.0 et 6.5 offrent aussi l’option NO ACTION uniquement (sans la syntaxe NO ACTION).
SQL Server 2000 a pris en charge les actions référentielles CASCADE et NO ACTION dès la version bêta 1. Le listing 1 présente la syntaxe de création de deux tables simples : Table1 et Table2. Table2 dispose d’une clé étrangère qui fait référence à Table1 ; l’action référentielle est l’option CASCADE pour les mises à jour et NO ACTION pour les opérations de suppression. NO ACTION est l’action par défaut. Par conséquent, la spécifier explicitement dans la définition de la contrainte est facultatif. Le listing tente ensuite des insertions dans les deux tables, y compris une insertion dans Table2 transgressant la relation de clé étrangère. SQL Server refuse la transgression et renvoie le message d’erreur suivant :
Server: Msg 547, Level 16, State 1, Line 1
INSERT statement conflicted with COLUMN FOREIGN KEY
constraint ‘FK_Table2_Table1_a’. The conflict occurred in
database ‘pubs’, table ‘Table1’, column ‘a’.
The statement has been terminated.
Le code essaie ensuite de supprimer un enregistrement référencé de la Table1, échoue et renvoie le message d’erreur suivant :
Server: Msg 547, Level 16, State 1, Line 1
DELETE statement conflicted with COLUMN REFERENCE constraint
‘FK_Table2_Table1_a’. The conflict occurred in database ‘pubs’,
table ‘Table2’, column ‘a’.
The statement has been terminated.
Le code supprime ensuite un enregistrement de Table1 non référencée par Table2. Enfin, le code met à jour toutes les valeurs de la clé primaire de Table1, répercutant en cascade les modifications sur Table2.
On peut également définir des clés étrangères par le biais de SQL Server Enterprise Manager. Dans le panneau de gauche, ouvrez la base de données, puis sélectionnez Tables. Lorsque le panneau de droite affiche toutes les tables, cliquez avec le bouton droit de la souris sur la table de référence puis sélectionnez Design Table. Sur la barre d’outils, cliquez sur le bouton Table and Index Properties, puis cliquez sur l’onglet Relationships. La figure 1 illustre la définition d’une clé étrangère de Table2 dans Table1. La boîte de dialogue permet de nommer la contrainte et de choisir la table (référencée) contenant la clé primaire et la table (de référence) contenant la clé étrangère. Des listes déroulantes permettent de choisir la colonne de chaque table constituant la clé. Au bas de la boîte de dialogue, on peut choisir de maintenir la relation entre les tables en appliquant une opération CASCADE pour les mises à jour de la clé primaire, les suppressions de la clé primaire ou les deux. Lorsqu’une case n’est pas cochée, cela signifie que le comportement par défaut NO ACTION (empêchant la modification) est activé.
Téléchargez cette ressource
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Pourquoi les outils de sécurité ne suffisent plus face aux angles morts de la détection
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- L’analytique prédictive au service de la décarbonation en France
- Ofelia, ex-Bonitasoft, lance une solution d’orchestration IA agentique
Articles les + lus
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
Les coûts cachés des merge requests générées par l’IA
Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
À la une de la chaîne Tech
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
- Les coûts cachés des merge requests générées par l’IA
- Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
