> Tech > Application de l’intégrité référentielle

Application de l’intégrité référentielle

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

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

Guide de technologie 5G pour l’entreprise

Guide de technologie 5G pour l’entreprise

Pourquoi la 5G est-elle faite pour votre entreprise ? La 5G peut améliorer la vitesse, la fiabilité et la capacité de votre réseau, permettant ainsi une meilleure collaboration, une productivité accrue et une prise de décision plus rapide. Notre livre blanc " The Big Book of Enterprise 5G" vous fournit les informations stratégiques dont vous avez besoin pour prendre des décisions éclairées et préparer votre entreprise à prospérer dans l'ère de la 5G. Cradlepoint, part of Ericsson est le leader mondial des solutions de réseau sans fil 4G LTE et 5G fournies via le cloud. Connectez vos employés, lieux et objets avec la 4G LTE et la 5G pour un WAN sans fil d'entreprise.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010