Dieser Artikel zeigt anhand eines Beispiels, wie die Konsistenz von MySQL-Ansichten sichergestellt werden kann (mit Prüfoption). Teilen Sie uns die Einzelheiten zu Ihrer Information mit: Manchmal erstellen wir eine Ansicht, um einen Teil der Daten in einer Tabelle anzuzeigen. Wir wissen, dass einfache Ansichten transparent sind, sodass Daten, die in der Ansicht nicht sichtbar sind, aktualisiert werden können. Durch diese Aktualisierung wird die Ansicht jedoch inkonsistent. Um die Konsistenz einer Ansicht sicherzustellen, verwenden Sie beim Erstellen oder Ändern einer Ansicht die aktualisierbare Klausel WITH CHECK OPTION. Schauen wir uns die grammatikalische Struktur der aktualisierbaren Klausel WITH CHECK OPTION an: ANSICHT ERSTELLEN ODER ERSETZEN view_name ALS select_statement MIT PRÜFOPTION; Wir sollten beachten, dass wir das Semikolon (;) am Ende der WITH CHECK OPTION-Klausel und nicht am Ende der Select-Anweisung setzen, um die Ansicht zu definieren. Versuchen wir nun, eine Ansicht mit dem Namen „vps“ basierend auf der Mitarbeitertabelle zu erstellen, um Mitarbeiter mit der Position VP anzuzeigen, z. B. VP Marketing und VP Sales: Erstellen oder ersetzen Sie View VPS als WÄHLEN Mitarbeiternummer, Nachname, Vorname, Berufsbezeichnung, Verlängerung, E-Mail, BüroCode, BerichteAn AUS Mitarbeiter WO Berufsbezeichnung WIE '%VP%'; Als nächstes fragen wir die Daten aus der VPS-Ansicht mit folgender Anweisung ab: mysql> AUSWÄHLEN * VON vps; +----------------+----------+--------------+---------------+---------------+-----------------------+------------+-----------+ | Mitarbeiternummer | Nachname | Vorname | Berufsbezeichnung | Durchwahl | E-Mail | Bürocode | Berichte an | +----------------+----------+--------------+---------------+---------------+-----------------------+------------+-----------+ | 1056 | Hill | Mary | Vizepräsidentin Vertrieb | x4611 | [email protected] | 1 | 1002 | | 1076 | Firrelli | Jeff | Vizepräsident Marketing | x9273 | [email protected] | 1 | 1002 | +----------------+----------+--------------+---------------+---------------+-----------------------+------------+-----------+ 2 Reihen im Set Da es sich bei VPS um eine einfache Ansicht handelt, kann sie aktualisiert werden. Daher fügen wir über die VPS-Ansicht eine Zeile mit Mitarbeiterdateninformationen ein: INSERT INTO vps(Mitarbeiternummer,Vorname,Nachname,Berufsbezeichnung,Durchwahl,E-Mail,Bürocode,Berichte an) Werte (1703, „Lily“, „Bush“, „IT-Manager“, „x9111“, „[email protected]“, 1,1002); Wir sollten beachten, dass die neu erstellte Mitarbeiterin in der VPS-Ansicht nicht sichtbar ist, da ihre Position die des IT-Managers und nicht des Vizepräsidenten ist. Verwenden Sie zur Überprüfung die folgende SELECT-Anweisung: SELECT * FROM Mitarbeiter WHERE Mitarbeiternummer=1703; Führen Sie die obige Anweisung aus und erhalten Sie die folgenden Ergebnisse: +----------------+-----------+-------------+-----------+---------------------------+------------+-----------+-------------------------+ | Mitarbeiternummer | Nachname | Vorname | Durchwahl | E-Mail | Bürocode | Berichtet an | Berufsbezeichnung | +----------------+-----------+-------------+-----------+---------------------------+------------+-----------+-------------------------+ | 1703 | Bush | Lily | x9111 | [email protected] | 1 | 1002 | IT-Manager | | 1702 | Gerard | Martin | x2312 | [email protected] | 4 | 1102 | Vertriebsmitarbeiter | | 1625 | Kato | Yoshimi | x102 | [email protected] | 5 | 1621 | Vertriebsmitarbeiter | | 1621 | Nishi | Mami | x101 | [email protected] | 5 | 1056 | Vertriebsmitarbeiter | Dies ist jedoch möglicherweise nicht das, was wir möchten, da die VPS-Ansicht VP-Mitarbeiter und nicht andere Mitarbeiter anzeigt. Um die Konsistenz der Ansicht sicherzustellen, können Benutzer daher nur Daten anzeigen oder aktualisieren, die über die Ansicht sichtbar sind. Verwenden Sie WITH CHECK OPTION, wenn Sie die Ansicht erstellen oder ändern: Erstellen oder ersetzen Sie View vps als WÄHLEN Mitarbeiternummer, Nachname, Vorname, Berufsbezeichnung, Verlängerung, E-Mail, BüroCode, BerichteAn AUS Mitarbeiter WO Berufsbezeichnung LIKE '%VP%' MIT PRÜFOPTION; Wir müssen darauf achten, die Klausel WITH CHECK OPTION am Ende der Anweisung CREATE OR REPLACE hinzuzufügen. Fügen Sie danach über die VPS-Ansicht erneut eine Zeile in die Mitarbeitertabelle ein, wie unten gezeigt: INSERT INTO vps(Mitarbeiternummer,Vorname,Nachname,Berufsbezeichnung,Durchwahl,E-Mail,Bürocode,Berichte an) WERTE(1704,'John','Minsu','IT-Mitarbeiter','x9112','[email protected]',1,1703); An diesem Punkt lehnt MySQL den Einfügevorgang ab und gibt die folgende Fehlermeldung aus:
Wir können einen Mitarbeiter mit der Position „SVP Marketing“ über die VPS-Ansicht in die Mitarbeitertabelle einfügen, um zu sehen, ob MySQL dies zulässt: INSERT INTO vps(Mitarbeiternummer,Vorname,Nachname,Berufsbezeichnung,Durchwahl,E-Mail,Bürocode,Berichte an) WERTE(1704,'John','Minsu','SVP Marketing','x9112','[email protected]',1,1076); MySQL meldet 1 betroffene Zeile (Abfrage OK, 1 betroffene Zeile). Wir können den Einfügevorgang erneut überprüfen, indem wir die Daten gemäß der VPS-Ansicht abfragen: WÄHLEN SIE * VON vps; Wie die obige Abfrage zeigt, funktioniert es wie erwartet: mysql> AUSWÄHLEN * VON vps; +----------------+----------+-----------+---------------+---------------+--------------------------------+------------+-----------+ | Mitarbeiternummer | Nachname | Vorname | Berufsbezeichnung | Durchwahl | E-Mail | Bürocode | Berichte an | +----------------+----------+-----------+---------------+---------------+--------------------------------+------------+-----------+ | 1056 | Hill | Mary | Vizepräsidentin Vertrieb | x4611 | [email protected] | 1 | 1002 | | 1076 | Firrelli | Jeff | Vizepräsident Marketing | x9273 | [email protected] | 1 | 1002 | | 1704 | Minsu | John | SVP Marketing | x9112 | [email protected] | 1 | 1076 | +----------------+----------+-----------+---------------+---------------+--------------------------------+------------+-----------+ 3 Reihen im Set Okay, das ist alles zu diesem Eintrag. Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“, „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“ und „Zusammenfassung der allgemeinen MySQL-Funktionen“. Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist. Das könnte Sie auch interessieren:
|
<<: Verwenden von Nginx zum Implementieren der Graustufenversion
>>: JavaScript navigator.userAgent erhält Browserinformationen – Fallerklärung
Offizielle Website-Adresse: https://www.mysql.com...
Viele Mobiltelefone verfügen mittlerweile über di...
Dieser Artikel stellt den Implementierungscode vo...
Öffnen Sie DREAMWEAVER und erstellen Sie ein neue...
Vorwort WeChat-Miniprogramme bieten neue offene F...
Tatsächlich ist es sehr einfach, Axios in Vue zu ...
Name Charakter Name Charakter Information Nachric...
Dieser Artikel soll vor allem Anfängern einige gr...
Die Installationsschritte für CentOS 7.3 werden a...
Inhaltsverzeichnis Knoten stellt Verbindung zu My...
<br />Vorheriger Artikel: Webdesign-Tutorial...
Diese Datenbankabfrageanweisung ist eine von 50 D...
Inhaltsverzeichnis 1 Einführung in nginx 1 Was is...
Inhaltsverzeichnis 1. Synchronisationsprinzip 2. ...
Heute ist mein Kollege beim Schreiben von MySQL-A...