Comment utiliser match instructions SQL

L'intégrité référentielle consiste à maintenir la cohérence dans une base de données SQL multitable. Vous pouvez perdre l'intégrité en ajoutant une ligne à une table enfant qui n'a pas de ligne correspondante dans la table parent de l'enfant. Vous pouvez causer des problèmes similaires en supprimant une ligne d'une table parent si les lignes correspondant à cette ligne existent dans une table enfant.

Supposons que votre entreprise dispose d'une table à la clientèle qui conserve la trace de tous vos clients et une table de vente qui enregistre toutes les transactions de vente. Vous ne voulez pas ajouter une ligne à VENTES jusqu'à ce que vous entrez dans le client de faire l'achat dans la table CLIENT. Vous aussi vous ne voulez pas supprimer un client de la table de client qui a fait des achats qui existent dans la table sales.

Avant d'effectuer une insertion ou une suppression, vous pouvez vérifier la rangée candidat à faire en sorte que insertion ou la suppression de cette ligne ne cause pas de problèmes d'intégrité. La RENCONTRE prédicat peut effectuer une telle vérification.

Disons que vous avez une table à la clientèle et une table de ventes. N ° de client est la clé primaire de la table des clients et agit comme une clé étrangère dans la table sales. Chaque ligne de la table de client doit disposer d'un cadre unique N ° de client qui est non nulle.

N ° de client est pas unique dans la table sales, parce que les clients de répétition acheter plus d'une fois. Cette situation est fine, il ne menace pas l'intégrité parce N ° de client est une clé étrangère, plutôt qu'une clé primaire dans ce tableau.




Apparemment, N ° de client peut être nul dans la table des ventes, parce que quelqu'un peut marcher dans la rue, acheter quelque chose, et de sortir avant que vous obtenez une chance d'entrer son nom et son adresse dans la table CLIENT. Cette situation peut créer des problèmes - une ligne dans la table enfant sans ligne correspondante dans la table parent.

Pour surmonter ce problème, vous pouvez créer un client générique dans le tableau de la clientèle et affecter toutes les ventes anonymes à ce client. Dites que le client les étapes jusqu'à la caisse enregistreuse et affirme qu'elle a acheté un Strike Fighter F-35 le 18 Décembre 2012. Même si elle a perdu sa réception, elle veut maintenant revenir l'avion car il apparaît comme un porte-avions sur les écrans radar des adversaires.

Vous pouvez vérifier si elle a acheté un F-35 par la recherche de votre base de données de ventes pour un match. D'abord, vous devez la récupérer N ° de client dans la variable vcustid- alors vous pouvez utiliser la syntaxe suivante:

... WHERE (: vcustid, «F-35», «18/12/2012») MATCH (SELECT CustomerID, ProductID, SaleDateFROM VENTES)

Si le RENCONTRE prédicat renvoie une valeur Vrai, la base de données contient une vente du F-35, le 18 Décembre 2012, à ce client de N ° de client. Reprenez le produit défectueux et remboursera l'argent du client. (Note: Si toutes les valeurs dans le premier argument de la RENCONTRE prédicat sont nuls, une valeur Vrai retourne toujours.)

Les développeurs de SQL ajouté le RENCONTRE prédicat et la UNIQUE prédicat pour la même raison - ils fournissent un moyen d'effectuer les tests définis explicitement pour l'intégrité référentielle implicite (RI) et UNIQUE contraintes.

La forme générale de la RENCONTRE prédicat est comme suit:

Row_valueMATCH [UNIQUE] [SIMPLE | PARTIELLE | COMPLET ] Subquery

La UNIQUE, SIMPLE, PARTIEL, et COMPLET les options ont trait aux règles qui entrent en jeu si l'expression de valeur de ligne R présente une ou plusieurs colonnes qui sont nuls. Les règles pour le RENCONTRE prédicat sont une copie des règles d'intégrité référentielle correspondant.


» » » » Comment utiliser match instructions SQL