SQL Règles clés externes. Clés de clé étrangère externes. Clé naturelle et de substitution

Utilisé dans n'importe quelle activité: dans les secteurs bancaires et financiers, les entreprises touristiques, les agrandissements d'entrepôt, la production et la formation. Ils représentent une totalité de tables, ont des propriétés claires et obéir aux exigences strictes. Dans les tables de base de données relationnelles, les relations appellent.

Quelle est la clé principale de la base de données

Dans la base de données, la clé principale du tableau est l'une de ses colonnes (clé primaire). Nous comprendrons l'exemple de la façon dont il a l'air. Imaginez une attitude simple d'étudiants universitaires (appelons-les "étudiants").

Nous devons définitivement définir l'étudiant sur une colonne. Pour cela, les informations dans cette colonne doivent être uniques pour chaque enregistrement. Mais les données disponibles à cet égard ne nous donnent pas sans équivoque l'entrée, car une installation, des nameakes et des étudiants ayant les mêmes noms et noms peuvent être appris sur un plat et une faculté. La clé principale de la base de données sert à déterminer avec précision la chaîne requise en relation. Le plus souvent à cette capacité, un champ numérique est utilisé automatiquement en augmentant avec l'entrée de l'enregistrement (colonne d'identifiant auto-incrémental).

Clé primaire simple et composite

La clé primaire peut être simple et composite. Si le caractère unique de l'enregistrement est déterminé par la valeur uniquement dans un champ, comme décrit ci-dessus, nous traitons une clé simple. La clé composite est la principale clé de la base de données composée de deux champs ou plus. Considérez la relation suivante des clients de la banque.

NOM ET PRÉNOM. Date de naissance Série de passeports ID du passeport
Ivanov P.A. 12.05.1996 75 0553009
Sergeev v.t. 14.07.1958 71 4100654
Krasnov L.V. 22.01.2001 73 1265165

Les passeports de personnes peuvent contenir la même série ou les mêmes chiffres, mais les passeports avec la même combinaison de la série et le nombre n'existent pas. Ainsi, la "série de passeports" et "numéro de passeport" deviendra une clé composite de la relation spécifiée, identifiant sans ambiguïté une personne.

Communication entre les relations

Ainsi, la clé principale de la base de données est une ou plusieurs colonnes de la table, ce qui vous permet d'identifier sans ambiguïté la chaîne de cette relation. De quoi est-ce nécessaire?

Revenons au premier exemple avec l'attitude «étudiants». Dans la base de données, en plus de cela, la relation est également stockée, par exemple, la performance de chaque élève. Afin de ne pas répéter toutes les informations déjà contenues dans la base de données, utilisez la touche, en vous référant à l'entrée souhaitée. Cela ressemble à ceci.

De deux manières, nous voyons le champ ID. Ce sont des clés principales de la base de données pour ces tables. Comme vous pouvez le constater, seules les références à ces champs sont contenues à partir d'autres tables sans avoir à spécifier toutes les informations d'eux.

Clé naturelle et de substitution

Comment la clé principale de la table de base de données définit-elle? Les deux exemples considérés par nous sont des "étudiants" et des "clients de la banque" - illustrent les concepts d'une clé naturelle et de substitution. Dans la table des clients de la Banque, nous avons défini la clé composée des champs "Numéro" et "Série de passeports", à l'aide des colonnes déjà disponibles. Une telle clé est appelée naturelle, pour sa définition, nous n'avons apporté aucune modification et ajouts. Dans le cas du ratio "étudiants", aucun champ ni combinaison de champs nous a donné un caractère unique. Cela nous a forcé à entrer dans un champ supplémentaire avec un code étudiant. Une telle clé est appelée substitution, pour lui, nous avons ajouté une autre colonne de service dans la table. Cette colonne ne supporte aucune information utile et ne sert que d'identifier les entrées.

Touche externe et intégrité des données dans la base de données

Tout ce qui précède nous conduit à une clé externe (clé étrangère) et à l'intégrité de la base de données. La clé étrangère est un champ faisant référence à la clé primaire d'une relation externe. Dans la table d'essai, il s'agit des colonnes étudiantes et de discipline. Leurs données nous font référence à des tables externes. C'est-à-dire que le champ "Étudiant" pour "performance" est la clé étrangère et par rapport à "l'étudiant" est la clé principale de la base de données.

Un principe important des bases de données de construction est leur intégrité. Et l'une de ses règles est l'intégrité des liens. Cela signifie que la clé externe du tableau ne peut pas faire référence à une clé primaire inexistante d'une autre relation. Il est impossible de supprimer de la relation "étudiant" avec le code 1000 - Ivanov Ivan s'il fait référence à une entrée de la table de travail académique. Dans la base de données correctement construite lorsque vous essayez de supprimer, vous obtiendrez une erreur que ce champ est utilisé.

Il existe d'autres groupes de règles d'intégrité, ainsi que d'autres limitations de bases de données, qui méritent également l'attention et doivent être prises en compte par les développeurs.

Clé étrangère. Utilisé pour limiter les liens.
Lorsque toutes les valeurs du même champ de table sont présentées dans l'autre champ de tableau, on dit que le premier champ fait référence à la seconde. Cela indique une connexion directe entre les valeurs de deux champs.

Quand un étage dans la table se réfère à un autre, on l'appelle clé externe; et le champ auquel il se réfère est appelé clé parentale. Les noms de la clé externe et de la clé parent ne doivent pas nécessairement être les mêmes. La clé externe peut avoir n'importe quel nombre de champs qui sont tous traités en tant que module unique. La clé externe et la clé parent à laquelle il se réfère doit avoir le même numéro et le même type de champ, et être dans le même ordre. Lorsque le champ est une clé externe, elle est définie dans un certain caractère associé à la table à laquelle elle se réfère. Chaque valeur, (chaque ligne) de la clé externe doit être inéquitable référence à une seule et unique cette valeur (rangée) de la clé parent. Si cette condition est observée, la base de données est dans un état intégrité de référence.

Sql Prend en charge l'intégrité de référence avec restriction Clé étrangère.. Cette fonctionnalité doit limiter les valeurs pouvant être entrées dans la base de données pour forcer la clé externe et la clé parent pour adapter le principe de l'intégrité de référence. Une des limites des actions Clé étrangère. - Il s'agit de la suppression des valeurs de champs limitées en tant que clé externe qui n'est pas encore représentée dans le vélecteur parent. Cette limitation affecte également la possibilité de modifier ou de supprimer les valeurs de la clé parent.

Limitation Clé étrangère. Utilisé dans la table Create (ou Alter Table (conçu pour modifier une table d'un tableau), contenant un champ qui est déclaré une clé externe. La clé parentale est donnée du nom à laquelle il existe un lien à l'intérieur de la restriction. Clé étrangère..

Comme la plupart des restrictions, il peut s'agir d'une restriction de table ou d'une colonne, sous la forme d'une table qui vous permet d'utiliser de nombreux champs comme une clé externe.

Syntaxe de restriction de table Clé étrangère.:

Clé étrangère. Les références.

[ ]

La première liste de colonnes est une liste d'une ou plusieurs colonnes de la table, qui sont séparées par des virgules et seront créées ou modifiées par cette commande.

Pktable. - Ceci est une table contenant la clé parent. Il peut s'agir d'une table créée ou modifie la commande actuelle.

La deuxième liste de colonnes est une liste de colonnes qui seront une clé parent. Les listes de deux colonnes doivent être compatibles, c'est-à-dire

  • avoir le même nombre de colonnes
  • dans cette séquence, la première, la deuxième, la troisième, etc., les colonnes de la liste des colonnes de clé étrangère doivent avoir les mêmes types de données et la même taille que le premier, deuxième, troisième, etc., la colonne de la liste des colonnes de clé parent.
  • les colonnes de la liste des deux colonnes ne doivent pas avoir les mêmes noms.

Exemple de clé étrangère 1

Créer un étudiant de table.
(Kod_stud entier non nul primaire Clé,
Kod_spec entier non ,

ADRES CHAR (50),
Décimale de balle),
Clé étrangère. (Kod_spec) Les références. Spec (kod_spec)
);

Lorsque vous utilisez Alter Tableau au lieu de créer une table, appliquer la limite Clé étrangère.Les valeurs indiquées dans la clé externe et la clé parentale doivent être dans un état d'intégrité de référence. Sinon, l'équipe sera rejetée.

En utilisant une limite Clé étrangère. Tables ou colonnes, vous ne pouvez pas spécifier une liste de colonnes de clé parent si la clé parent a une limite de primaire Clé. Naturellement, dans le cas des clés avec de nombreux champs, l'ordre des colonnes dans les clés externes et primaires doit coïncider et, dans tous les cas, le principe de compatibilité entre deux clés est toujours applicable.

Exemple de clé étrangère 2

Créer un étudiant de table (
Kod_stud entier non nul primaire Clé,
Fam Char (30) Not NULL UNIQUE
ADRES CHAR (50),
Décimale de balle),
Kod_spec Integer références SPEC
);

Le maintien de l'intégrité de référence nécessite certaines restrictions sur les valeurs pouvant être présentées dans des champs déclarés sous forme de clé externe et de clé parent. La clé parent doit être structurelle pour que chaque valeur de clé externe correspond à une ligne spécifiée. Cela signifie qu'il (clé) doit être unique et ne contenir aucune valeur vide (NULL).

Cela ne suffit pas pour la clé parent si une telle exigence est remplie comme lorsqu'une déclaration clé externe. Sql Il convient de confirmer que des valeurs doubles ou des valeurs vides (NULL) n'ont pas été entrées dans la clé parent. Par conséquent, il est nécessaire de s'assurer que tous les champs utilisés comme clés parent ont ou limitent le primaire Clé ou une restriction unique, comme non des restrictions nulles.

Références clés externes uniquement sur les clés primaires - une bonne stratégie. Lorsque des touches externes sont utilisées, elles sont contraignantes non seulement avec des clés parent à laquelle elles se réfèrent; Ils sont associés à une chaîne spécifique de la table, où se trouvera cette clé parent. La clé parent elle-même ne fournit aucune information qui n'était pas déjà représentée dans la clé étrangère.

Étant donné que le but de la clé principale est d'identifier le caractère unique de la chaîne, il s'agit d'un choix plus logique et moins ambigu pour la clé externe. Pour toute clé externe qui utilise une clé unique en tant que clé parent, vous devez créer une clé externe qui utiliserait la clé primaire du même tableau pour la même action. La clé externe qui n'a pas d'autre but en plus des lignes de liaison, ressemble à la clé primaire utilisée uniquement pour identifier les lignes et constitue un bon moyen de préserver la structure de base de données claire et simple. La clé externe ne peut contenir que les valeurs réellement présentées dans la vénérance mère ou vide (NULL). Tenter de saisir d'autres valeurs sur cette clé sera rejetée.

Exemple de clé étrangère 3

Créer un paiement de table (
Sh_payout entier,
Sh_eml entier,
Date_payout date,
Somm_payout réel,
Clé étrangère. (Sh_eml) références K_SOTR2 (EID)
);

Dans cet exemple Clé étrangère. La colonne SH_EML se lie à la colonne EID à partir de la table K_SOTR2.

Ce sont des installations de stockage d'informations électroniques, l'accès auquel est effectué en utilisant un ou plusieurs ordinateurs. En règle générale, la base de données est créée pour stocker et accéder à des données contenant des informations sur une certaine zone, c'est-à-dire une zone d'activité humaine ou une partie du monde réel.

Le SGBD est des outils logiciels pour créer, remplir, mettre à jour et supprimer la base de données.

L'unité stockée dans la base de données est la table. Chaque table est un ensemble de lignes et de colonnes, où les chaînes correspondent à une instance d'objet, à un événement ou à un phénomène spécifique, ainsi que les colonnes d'attributs (fonctionnalités, caractéristiques, paramètres) de l'objet, des événements ou des phénomènes. Chaque ligne contient des informations sur un événement spécifique.

En termes de base de données, les colonnes de la table sont appelées champs et ses lignes sont des enregistrements.

Il peut y avoir des connexions entre des tables de base de données individuelles, c'est-à-dire que les informations de la table précédente peuvent en être ajoutées une autre. La base de données, entre les tables individuelles dont il y a des connexions, s'appelle relationnelle. La même table peut être la principale par rapport au même tableau de base de données et filiale de l'autre.

Les relations de table connexes interagissent sur le principe du subordonné principal. La même table peut être la principale chose à une table de base de données et une filiale à une autre.

Un objet - C'est quelque chose qui existe et distinguable, ayant un ensemble de propriétés. La différence d'un objet d'un autre objet est déterminée par les valeurs spécifiques des propriétés.

Essence - Réflexion d'un objet dans la mémoire ou l'ordinateur d'une personne.

Attribut - la valeur spécifique de l'une des propriétés de l'essence.

Domaine - Ceci est un élément d'entrée dans lequel la valeur d'attribut spécifique est stockée.

Champ de communication ceci est un champ pour lequel deux tables sont connectées.

Touches primaires et secondaires

Dans chaque table de base de données, la clé principale peut exister - ce champ ou champ de champs, identifiant de manière unique l'enregistrement.

La valeur de la clé principale de la table de base de données doit être unique, c'est-à-dire que la table ne doit pas exister deux enregistrements ou plus avec la même valeur de clé primaire.

Les clés primaires facilitent l'établissement de liens entre les tables. Étant donné que la clé principale doit être unique, tous les champs de table ne peuvent pas être utilisés pour cela.

S'il n'y a pas de champs dans la table, les valeurs dans lesquelles sont uniques, un champ numérique supplémentaire est généralement administré à celui-ci pour créer une clé primaire, dont les valeurs de la SGBD peuvent disposer à sa discrétion.

Les touches secondaires sont installées sur le champ, qui sont souvent utilisées lors de la recherche ou du tri des données: les index construits selon les touches secondaires aideront le système beaucoup plus rapidement à trouver les valeurs souhaitées stockées dans les champs correspondants.

Contrairement aux clés principales, les champs des clés secondaires peuvent contenir des informations non uniques.

Relations relationnelles entre les tables

Un par un. L'attitude individuelle a lieu lorsqu'une entrée de la table des parents correspond à une entrée dans une filiale.

Cette attitude se trouve beaucoup moins fréquemment que l'attitude d'un à plusieurs, elle est utilisée, s'ils ne veulent pas, de sorte que la table de base de données gonflée de la table secondaire. Communication Un-à-un conduit à la lecture des informations associées dans plusieurs tables, vous devez effectuer plusieurs opérations de lecture, qui ralentissent l'obtention des informations nécessaires. De plus, la base de données, qui inclut des tables avec une connexion d'un à un ne peut être considérée comme entièrement normalisée.

Comme une connexion une-à-plusieurs, la connexion dont une à une peut être robuste et non rigide.

Il s'applique à: SQL Server (à partir de 2016) SQL Azure Pack SQL AzureParallely Data Warehouse Warehouse Base de données

Les clés primaires et externes sont deux types de restrictions pouvant être utilisées pour assurer l'intégrité des données dans les tables SQL Server. Ce sont des objets de base de données importants.

Ce sujet est décrit dans les sections suivantes.

Restrictions principales principales

Limitations de clé étrangère

Tâches associées

Habituellement, il y a une colonne dans la table ou une combinaison de colonnes contenant des valeurs qui définissent de manière unique chaque ligne de la table. Cette colonne, ou colonnes, s'appelle la clé primaire (PK) de la table et assure l'intégrité de l'essence de la table. Les limitations de la clé primaire sont souvent définies dans la colonne Identifiant, car elles garantissent le caractère unique des données.

Lorsque vous spécifiez la limite principale de la clé pour la table des composants, le composant moteur de base de données assure une unicité de données en créant automatiquement un index unique pour les colonnes de clé primaire. Cet indice fournit également un accès rapide aux données lors de l'utilisation de la clé primaire dans les requêtes. Si la principale restriction de clé est définie sur plusieurs colonnes, les valeurs peuvent être dupliquées dans une colonne, mais chaque combinaison de valeurs de toutes les colonnes pour déterminer la limite de la clé primaire doit être unique.

Comme indiqué dans le dessin suivant, colonnes Produit et Fournisseur ID. Tableau Achat.productvendor Forment la limite composite de la clé primaire de ce tableau. Il est garanti que chaque chaîne dans la table Producteur de produits a une combinaison unique de valeurs Produit et Fournisseur ID.. Cela empêche l'insertion de lignes répétitives.

    La table peut avoir une seule restriction de clé principale.

    La clé principale ne peut pas inclure plus de 16 colonnes et la longueur totale de la clé ne peut pas dépasser 900 octets.

    L'indice généré par la restriction de la clé principale ne peut entraîner une sortie du nombre d'indices dans le tableau au-delà de 999 index nécessaires et 1 regroupement.

    S'il ne spécifie pas pour limiter la clé principale, si l'index est clustered ou non verrouillable, l'index en cluster est créé, s'il n'y a personne dans la table.

    Toutes les colonnes avec la principale contrainte de clé doivent être définies comme NULL non valide. Si la validité de la valeur NULL n'est pas spécifiée, toutes les colonnes avec la limite de la clé primaire sont définies comme ne permettant pas NULL.

    Si la clé principale est définie sur la colonne Type de données définie CLR, la mise en œuvre de ce type doit supporter le tri binaire.

La clé externe (FK) est une colonne ou une combinaison de colonnes, utilisée pour appliquer la communication entre les données dans deux tables afin de surveiller les données pouvant être stockées dans la table de clés externe. Si une ou plusieurs colonnes dans lesquelles la clé primaire est située pour une table, on réfère dans une ou plusieurs colonnes d'une autre table, le lien de clé externe crée un lien entre les deux tables. Cette colonne devient une clé externe dans la deuxième table.

Par exemple, table Sales.SalesalorderHeader. associé à la table Sales.SalePerson. En utilisant une clé externe, car il existe une connexion logique entre les commandes de vente et les gestionnaires de vente. Colonne Vendeur Tableau Sales.SalesalorderHeader. Correspond à la colonne clé principale du tableau Vendeur.. Colonne Vendeur Tableau Sales.SalesalorderHeader. est une clé externe pour la table Vendeur.. En définissant cette connexion sur la valeur de clé externe pour Vendeur ne peut pas être inséré dans la table SalesOrderHeader.S'il n'est actuellement pas contenu dans la table Vendeur..

Le nombre maximum de tables et de colonnes sur lesquelles la table peut se référer à des touches externes (liens sortants) est de 253. SQL Server 2016 augmente la limite du nombre d'autres tables et colonnes pouvant également faire référence aux colonnes d'une table (liens entrants ), de 253 à 10 000. (Le niveau de compatibilité est requis au moins 130.) L'augmentation présente les limitations suivantes:

    Excès de 253 références aux touches externes n'est prise en charge que pour les opérations de suppression DML. Les opérations de mise à jour et de fusion ne sont pas prises en charge.

    L'excès de 253 références aux touches externes n'est actuellement pas disponible pour les index de colonne optimisés pour la mémoire de table, la base de données stretch ou les tables de clé externes partitionnées.

Index dans les restrictions de la clé étrangère

Contrairement aux limitations de la clé primaire, lors de la création d'une restriction de clé externe, l'index correspondant n'est pas automatiquement créé. Cependant, il est souvent nécessaire de créer manuellement un index pour la clé externe pour les raisons suivantes:

    Les colonnes de clés étrangères sont souvent utilisées dans les critères de connexion lors du partage des requêtes de données à partir de tables correspondantes. Ceci est implémenté en mappant une colonne ou des colonnes dans la limitation de la clé externe d'une table avec une ou plusieurs colonnes primaires ou une clé unique dans une autre table. L'index permet au composant du composant moteur de base de données de trouver rapidement les données associées dans la table de clé externe. Cependant, la création de l'indice n'est pas obligatoire. Les données de deux tableaux associées peuvent être combinées, même si la clé interne ou les restrictions de clé externes ne sont pas définies entre les tables, mais la connexion de clé externe entre les deux tables montre que ces deux tables sont optimisées pour la co-utilisation dans une requête où Les clés sont utilisées comme critères.

    En utilisant les restrictions de la clé étrangère dans les tableaux associées, les modifications des limitations de la clé primaire sont vérifiées.

Affiner l'intégrité

La tâche principale de limiter la clé externe consiste à gérer les données pouvant être sauvegardées dans la table de clé externe, mais cette restriction contrôle également la modification des données dans la table de la clé principale. Par exemple, lors de la suppression d'une chaîne pour un responsable des ventes de la table Sales.SalePerson.dont l'identifiant est utilisé dans les commandes de vente dans la table Sales.SalesalorderHeader.L'intégrité de référence des deux tables sera brisée. Commandes à vendre Remote Manager dans la table SalesOrderHeader. sera invalide sans communication avec des données dans le tableau Vendeur..

La restriction de la clé externe empêche la survenue de cette situation. La restriction garantit l'intégrité des références comme suit: Il interdit la modification des données dans la table de la clé principale, si de telles modifications apportent un lien invalide dans la table des touches externes. Si vous essayez de retirer la chaîne dans la table de la clé principale ou de modifier la valeur de cette touche sera détectée que la valeur distante ou modifiée de la clé primaire correspond à une certaine valeur dans la limitation de la clé externe dans une autre table, l'action ne sera pas. être exécuté. Pour modifier ou supprimer avec succès une chaîne avec une restriction de clé externe, vous devez d'abord supprimer les données de clé externes dans la table des touches externes ou modifier les données de la table de clé externe que la touche externe avec les autres données de clé primaire est connectée.

Intégrité de référence en cascade

Utilisation des restrictions d'intégrité de référence en cascade, vous pouvez déterminer les actions que le composant composant du moteur de base de données prendra lorsque l'utilisateur tente de supprimer ou de mettre à jour la clé à laquelle les autres touches externes indiquent. Les actions en cascade suivantes peuvent être définies.

Pas d'action.
Le composant du composant moteur de base de données génère une erreur, après quoi la suppression ou la mise à jour de la chaîne de la table des parents est en cours d'exécution.

Cascade.
Les lignes correspondantes sont mises à jour ou supprimées de la table de référence si cette chaîne est mise à jour ou supprimée de la table des parents. La valeur en cascade ne peut pas être spécifiée si la colonne Type horodatage. Cela fait partie d'une clé externe ou de référence. L'action en cascade sur Supprimer Ne peut pas être spécifiée dans la table pour laquelle le dépigleur de suppression est défini. La proposition de cascade sur la mise à jour ne peut pas être spécifiée par rapport aux tableaux pour lesquels les déclencheurs à la mise à jour sont définis.

Définir NULL.
Toutes les valeurs constituant la clé externe sont attribuées à NULL lorsque la ligne correspondante de la table parente est mise à jour ou supprimée. Pour effectuer cette restriction, les colonnes de clés externes doivent permettre des valeurs null. N'a pas pu être spécifié par rapport aux tables pour lesquelles les déclencheurs à jour sont définis.

Définir par defaut.
Toutes les valeurs qui composent la clé externe, lors de la suppression ou de la mise à jour de la ligne correspondante de la table des parents, sont définies sur la valeur par défaut. Pour effectuer cette restriction, toutes les colonnes de clés externes doivent avoir des définitions par défaut. Si la colonne permet aux valeurs nulelles et que la valeur par défaut n'est clairement pas définie, NULL devient la valeur de colonne par défaut. N'a pas pu être spécifié par rapport aux tables pour lesquelles les déclencheurs à jour sont définis.

Mots-clés CASCADE, SET NULL, Définir par défaut et aucune action ne peut être combinée dans des tables contenant des liens de référence mutuelle. Si le composant composant du moteur de base de données détecte le mot-clé Aucun action, il s'arrêtera et roulez les opérations de cascade associées, définissez NULL et définissez par défaut. Si l'instruction DELETE contient une combinaison de mots-clés cascade, définissez NULL, définissez le paramètre par défaut et aucune action, toutes les opérations de cascade, définissez NULL et SET par défaut sont exécutées avant de rechercher le moteur de base de données des composants de composant Aucune action.

Déclencheurs et références en cascade

Les références en cascade exécutées après la mise à jour ou après Supprimer les déclencheurs comme suit:

    Toutes les références en cascade causées directement par les instructions de source de Supprimer ou de mise à jour sont effectuées en premier.

    S'il y a des déclencheurs après définis pour les tables modifiées, ces déclencheurs sont exécutés après que toutes les actions en cascade soient remplies. Ces déclencheurs sont courus afin d'inverser les actions en cascade. Si plusieurs déclencheurs sont définis pour une table, ils fonctionnent dans un ordre aléatoire, à moins que les premiers et derniers déclencheurs sélectionnés de la table ne soient pas spécifiés. Cette procédure est déterminée par la procédure.

    Si les séquences d'actions en cascade se produisent de la table, ce qui a été l'objectif direct de supprimer ou de mettre à jour des actions, l'ordre des déclencheurs de déclenchement n'est pas défini par ces séquences. Cependant, une séquence d'actions lance toujours tous ses déclencheurs avant qu'il ne commence à faire la suivante.

    Après la table de déclenchement, le but direct de supprimer ou de mettre à jour l'action est lancé, qu'il s'agisse d'au moins certaines lignes ont été modifiées. Dans ce cas, la cascade n'affecte aucune autre tables.

    Si l'un des déclencheurs précédents effectue des opérations de suppression ou de mise à jour sur d'autres tables, ces opérations peuvent provoquer leurs propres séquences d'actions en cascade. Ces séquences secondaires sont traitées pour chaque opération de suppression ou de mise à jour après avoir effectué tous les déclencheurs des principales séquences d'actions. Ce processus peut être répété de manière récursive pour les opérations de suppression ou de mise à jour ultérieures.

    Effectuer des opérations de création, d'alter, de suppression ou d'autres opérations DDL dans les déclencheurs peut entraîner le lancement des déclencheurs DDL. Cela peut conduire à d'autres opérations de suppression ou de mise à jour, qui entamera des séquences supplémentaires d'actions en cascade et lanceront leurs déclencheurs.

    Si une erreur survient dans une séquence particulière de références en cascade, aucun déclencheur accessible ailleurs sera lancé dans cette séquence et une restauration sera effectuée pour les opérations de suppression ou de mise à jour.

    La table pour laquelle le TRIGE est défini, peut également être une proposition de références indiquant une action spécifique en cascade. Toutefois, la table de déclenchement de déclenchement après la gâchette peut exécuter des instructions d'insertion, de mise à jour ou de suppression d'une autre table ou d'une autre vue qui s'exécutera au lieu de la minuterie pour cet objet.

Le tableau suivant répertorie les tâches générales associées aux limitations de la clé primaire et de la clé externe.

Dernière mise à jour: 17/04/2019

Les clés externes vous permettent d'établir des liens entre les tables. La clé externe est définie pour les colonnes de la table dépendante, subordonnée et indique l'une des colonnes de la table principale. En règle générale, la clé externe indique la clé primaire de la table principale associée.

La syntaxe générale de l'installation de la clé externe au niveau de la table:

Touche étrangère (colonne1, colonne2, ... colonne) Références Accueil_Tablik (colonne_tela_table1, colonne_tela_table2, ... colonne_-head_tablen)

Pour créer une restriction de clé externe après une clé étrangère, une colonne de table est spécifiée qui représentera la clé externe. Et après le mot-clé de références, le nom de la table associée est spécifié, puis entre parenthèses, le nom de la colonne associée à laquelle la clé externe indiquera. Après l'expression des références, il existe sur Supprimer et sur les expressions de mise à jour qui spécifient une action lorsque vous supprimez et mettez à jour la ligne de la table principale, respectivement.

Par exemple, nous définissons deux tables et les connectez-les à travers une clé externe:

Créer des clients de table (ID INT PRICATEUR TYGE AUTO_INCREMENTEMENT, AGE INT, FRICENAME VARCHAR (20) NOT NULL, NOME VARCHAR (20) NON NULL, TÉLÉPHONE VARCHAR (20) NON NULL UNIQUE); Créer des commandes de table (ID INT Touche principale Auto_Increment, CustomerID Int, CaredAtAt Date, Clé étrangère (CustomerID) Références Clients (ID));

Dans ce cas, les tables des clients et des commandes sont définies. Les clients sont les principaux et représentent le client. Les commandes dépendent et présentent une commande faite par le client. La table des commandes via la colonne CustomerID est liée à la table des clients et à sa colonne ID. C'est-à-dire que la colonne CustomerID est une clé externe indiquant un ID de colonne de la table des clients.

En utilisant la déclaration de contrainte, vous pouvez définir un nom pour limiter la clé externe:

Créer des commandes de table (ID INT CLES PRIMAIRE AUTO_INCREMENTEMENT, CUSTHYID INT, CARECENTATEAT DATE, COMMUNIER COMMANDES_CUSTONMERS_FK Clé étrangère (CustomerID) Références CLIENTS (ID));

Sur Supprimer et sur la mise à jour

En utilisant sur Supprimer et sur les expressions de mise à jour, vous pouvez définir des actions effectuées en conséquence lors de la suppression et de la modification de la ligne associée de la table principale. Les options suivantes peuvent être utilisées comme actions:

    Cascade: supprime ou modifie automatiquement des lignes d'une table dépendante lors de la suppression ou de la modification des lignes associées dans la table principale.

    Définissez NULL: lorsque vous supprimez ou mettez à jour la ligne connectée à partir de la table principale définit la valeur NULL pour la colonne de la clé extérieure. (Dans ce cas, la colonne Touche externe doit prendre en charge l'installation NULL)

    Restreindre: dévie la suppression ou le changement des lignes dans la table principale en présence de lignes liées dans la table dépendante.

    Aucune action: la même chose que restreindre.

    Définir par défaut: lorsque vous retirez la ligne associée, il définit la valeur par défaut de la colonne par défaut, définie à l'aide des attributs par défaut. Malgré le fait que cette option est en principe disponible, mais le moteur InnoDB ne supporte pas cette expression.

Suppression en cascade

La suppression en cascade vous permet de supprimer automatiquement toutes les lignes connexes d'une table dépendante lors de la suppression d'une chaîne de la table principale. Cela utilise l'option Cascade:

Créer des commandes de table (ID INT CLES PRIMAIRES Auto_Increment, CustomerID Int, CaredAtAt Date, Clé étrangère (Customer) Demandage des clients (ID) sur Suppr Cascade);

De même, l'expression sur la mise à jour de la cascade fonctionne également. Lorsque vous modifiez la valeur de la clé primaire, la valeur de la clé externe associée à celle-ci changera automatiquement. Cependant, étant donné que les clés primaires changent très rarement, et il n'est pas recommandé d'utiliser les colonnes avec des valeurs variables en tant que touches primaires, puis dans la pratique, l'expression sur la mise à jour est rarement utilisée.

Installation null

Lors de l'installation de l'option SET NULL, l'option NULL définie est nécessaire à la colonne de touche externe pour admettre la valeur NULL:

Créer des commandes de table (ID INT Touche principale Auto_Increment, CustomerID Int, CreateDaTAT Date, Clé étrangère (CustomerID) Référencent les clients (ID) sur Supprimer Set Null);

Avez-vous aimé l'article? Partager avec des amis: