Wie man MATCH in SQL-Anweisungen verwenden

Referenzielle Integrität beinhaltet in einer Multitable SQL Datenbank-Konsistenz beibehalten wird. Sie können Integrität zu verlieren, indem Sie eine Zeile zu einer untergeordneten Tabelle hinzufügen, die keine entsprechende Zeile in der Kinderelterntabelle hat. Sie können ähnliche Probleme verursachen, indem sie eine Reihe von einer übergeordneten Tabelle zu löschen, wenn Zeilen in dieser Zeile entspricht, die in einer untergeordneten Tabelle vorhanden sind.

Angenommen, Ihr Unternehmen eine CUSTOMER-Tabelle hat, die den Überblick über Ihre Kunden und eine Tabelle SALES hält, die alle Verkaufstransaktionen aufzeichnet. Sie wollen nicht eine Zeile zu SALES bis hinzuzufügen, nachdem Sie den Kunden, den Kauf in der CUSTOMER-Tabelle eingeben. Sie will auch nicht einen Kunden aus der CUSTOMER-Tabelle zu löschen, wenn die Einkäufe der Kunden gemacht, die in der Tabelle SALES existieren.

Bevor Sie eine Insertion oder eine Deletion durchführen, können Sie die in Frage kommende Zeile zu überprüfen, um sicherzustellen, dass das Einfügen oder die Zeile Löschen nicht Integritätsprobleme verursacht. Das SPIEL Prädikat kann eine solche Prüfung durchführen.

Sagen Sie bitte eine CUSTOMER-Tabelle und eine Tabelle SALES haben. Kundennummer ist der Primärschlüssel der Tabelle CUSTOMER und wirkt als Fremdschlüssel in der Tabelle SALES. Jede Zeile in der Tabelle CUSTOMER muss eine eindeutige haben Kundennummer das ist nicht null.

Kundennummer ist in der Tabelle SALES nicht einzigartig, weil Stammkunden mehr als einmal kaufen. Diese Situation ist fein- es nicht bedrohen die Integrität, weil Kundennummer ist ein Fremdschlüssel und nicht als Primärschlüssel in der Tabelle.

Scheinbar, Kundennummer kann in der Tabelle SALES null sein, weil jemand von der Straße zu Fuß in kann, etwas zu kaufen, und gehen aus, bevor Sie eine Chance bekommen, seinen oder ihren Namen und Adresse in der Tabelle CUSTOMER einzugeben. Diese Situation kann Probleme schaffen - eine Zeile in der Tabelle Kind ohne entsprechende Zeile in der übergeordneten Tabelle.

Um dieses Problem zu überwinden, können Sie einen allgemeinen Kunde in der CUSTOMER-Tabelle erstellen und alle anonymen Verkäufe an diesen Kunden zuordnen. Sagen Sie, dass ein Kunde an der Kasse tritt und behauptet, dass sie eine F-35 Strike Fighter am 18. Dezember gekauft 2012. Obwohl sie ihre Quittung verloren hat, will sie das Flugzeug jetzt zurück, weil sie auf wie ein Flugzeugträger zeigt nach oben Gegner Radarschirmen.

Sie können überprüfen, ob sie eine F-35 gekauft, indem Sie Ihre Datenbank SALES Suche nach einer Übereinstimmung. Zunächst müssen Sie sie abrufen Kundennummer in die Variable vcustid- dann können Sie die folgende Syntax verwenden:

... WHERE (: vcustid, "F-35", "2012.12.18 ') MATCH (SELECT CustomerID, ProductID, SaleDateFROM SALES)

wenn der SPIEL Prädikat gibt einen wahren Wert, die Datenbank enthält einen Verkauf der F-35 am 18. Dezember 2012 zu diesem Kunden Kundennummer. Nehmen Sie das defekte Produkt zurück und erstatten das Geld des Kunden. (Hinweis: Wenn alle Werte in dem ersten Argument der SPIEL Prädikat sind null, einen wahren Wert liefert immer.)

SQL-Entwickler hinzugefügt die SPIEL Prädikat und die EINZIGARTIG Prädikat aus dem gleichen Grund - sie bieten eine Möglichkeit, explizit die Tests durchführen, für die implizite referentielle Integrität definiert (RI) und EINZIGARTIG Einschränkungen.

Die allgemeine Form der SPIEL Prädikat ist wie folgt:

Row_valueMATCH [UNIQUE] [SIMPLE | PARTIAL | FULL] Subquery

Das EINZIGARTIG, EINFACH, TEILWEISE, und VOLL Optionen beziehen sich auf Regeln, die ins Spiel kommen, wenn der Zeilenwert Ausdruck R hat eine oder mehrere Spalten, die null sind. Die Regeln für die SPIEL Prädikat sind eine Kopie der Regeln der referentiellen Integrität entspricht.

Menü