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
Construire une infrastructure cloud optimisée pour l’IA avec Microsoft Azure
Les managers IT ont besoin d’une stratégie claire et de solutions concrètes pour préparer leur infrastructure cloud à l'adoption de l'IA, tout en optimisant les coûts, renforçant la sécurité et développant les compétences internes. Découvrez tous les conseils dans ce guide Insight.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Top 5 du Baromètre de la cybersécurité 2025 : entre confiance et vulnérabilités persistantes
- Analyse Patch Tuesday Février 2026
- Entamer la transition vers la cryptographie post quantique est prioritaire
- Full Cloud : une transformation numérique inévitable pour les entreprises ?
Articles les + lus
Quand l’innovation échappe à ses créateurs: Comment éviter l’effet Frankenstein à l’ère de l’IA
Alliée ou menace ? Comment l’IA redessine le paysage cyber
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
À la une de la chaîne Tech
- Quand l’innovation échappe à ses créateurs: Comment éviter l’effet Frankenstein à l’ère de l’IA
- Alliée ou menace ? Comment l’IA redessine le paysage cyber
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
