Wenn Sie Daten durchsuchen, arbeitet eine Abfrage mit einem oder mehreren Datenbankobjekten und erzeugt eine Ergebnismenge. Genau wie eine Basistabelle hat eine Ergebnismenge aus einer Abfrage Spalten und Zeilen. Eine Ansicht gibt einer Abfrage einen bestimmten Namen und hält die Definition in den Systemtabellen der Datenbank fest.
Nehmen wir an, dass Sie die Anzahl der Mitarbeiter in jeder Abteilung auflisten wollen. Sie können diese Liste mit der folgenden Anweisung zusammenstellen:
SELECT DepartmentID, COUNT(*) FROM Employees GROUP BY DepartmentID; |
Sie können mit Sybase Central oder Interactive SQL eine Ansicht erstellen, die die Ergebnisse dieser Anweisung enthält.
Es bestehen einige Einschränkungen bezüglich der SELECT-Anweisungen, die Sie als reguläre Ansichten verwenden können. Insbesondere können Sie keine ORDER BY-Klausel in einer SELECT-Abfrage verwenden. Es gehört zum Wesen von relationalen Datenbanktabellen, dass die Reihenfolge der Zeilen und Spalten keine Bedeutung hat. Eine ORDER BY-Klausel würde die Zeilen der Ansicht in eine Reihenfolge zwingen. Sie können die GROUP BY-Klausel, Unterabfragen und Joins in Ansichtsdefinitionen verwenden.
Um eine Ansicht zu entwickeln, sollten Sie die SELECT-Abfrage selbst so abstimmen, bis sie genau die Ergebnisse und das Format liefert, die Sie benötigen. Wenn die SELECT-Anweisung richtig abgestimmt ist, können Sie vor der Abfrage die folgende Klausel hinzufügen, um die Ansicht zu erstellen:
CREATE VIEW Ansichtsname AS Abfrage; |
Aktualisierungen können in einer Ansicht mit den UPDATE-, INSERT- oder DELETE-Anweisungen durchgeführt werden, wenn die Abfragenspezifikation, die die Ansicht festlegt, aktualisierbar ist. Ansichten sind von Natur aus nicht-aktualisierbar, wenn ihre Definition eine der folgenden Elemente in ihrer Abfragenspezifikation enthält:
UNION-Klausel
DISTINCT-Klausel
GROUP BY-Klausel
FIRST- oder TOP-Klausel
Aggregatfunktionen
Mehr als eine Tabelle in der FROM-Klausel, wenn die Option ansi_update_constraints auf 'Strict' oder 'Cursor' gesetzt ist. Weitere Hinweise finden Sie unter ansi_update_constraints-Option [Kompatibilität].
ORDER BY-Klausel, wenn die Option ansi_update_constraints auf 'Strict' oder 'Cursor' gesetzt ist. Weitere Hinweise finden Sie unter ansi_update_constraints-Option [Kompatibilität].
Alle Auswahlliste-Elemente, die keine Basistabellenspalten sind.
In Sybase Central können Sie Ansichten zwischen Datenbanken kopieren. Wählen Sie dazu die Ansicht im rechten Fensterausschnitt von Sybase Central und ziehen Sie sie in den Ordner Ansichten einer anderen verbundenen Datenbank. Es wird eine neue Ansicht erstellt und die Definition der Originalansicht wird für die neue Ansicht kopiert. Beachten Sie, dass lediglich die Ansichtsdefinition für die neue Ansicht kopiert wird. Andere Ansichtseigenschaften, z.B. Berechtigungen, werden nicht kopiert.
Die Klausel WITH CHECK OPTION ist nützlich, um zu kontrollieren, welche Daten geändert werden, wenn über eine Ansicht Daten in eine Basistabelle eingefügt oder aktualisiert werden. Mit dem folgenden Beispiel wird dies veranschaulicht.
Führen Sie die folgende Anweisung aus, um die Ansicht "SalesEmployees" mit einer WITH CHECK OPTION-Klausel zu erstellen.
CREATE VIEW SalesEmployees AS SELECT EmployeeID, GivenName, Surname, DepartmentID FROM Employees WHERE DepartmentID = 200 WITH CHECK OPTION; |
Zeigen Sie die Inhalte dieser Ansicht wie folgt an:
SELECT * FROM SalesEmployees; |
EmployeeID | GivenName | Surname | DepartmentID |
---|---|---|---|
129 | Philip | Chin | 200 |
195 | Marc | Dill | 200 |
299 | Rollin | Overbey | 200 |
467 | James | Klobucher | 200 |
... | ... | ... | ... |
Versuchen Sie nun, die "DepartmentID" für Philip Chin auf 400 zu ändern:
UPDATE SalesEmployees SET DepartmentID = 400 WHERE EmployeeID = 129; |
Da WITH CHECK OPTION festgelegt wurde, prüft der Datenbankserver, ob die Aktualisierung die neue Ansichtsdefinition verletzt (in diesem Fall den Ausdruck in der WHERE-Klausel). Die Anweisung schlägt fehl (DepartmentID muss 200 sein) und der Datenbankserver meldet den Fehler "Verletzung von WITH CHECK OPTION für INSERT/UPDATE in Basistabelle 'Employees'."
Hätten Sie WITH CHECK OPTION nicht in der Ansichtsdefinition angegeben, wäre die Aktualisierung fortgesetzt worden. Die Tabelle "Employees" wäre auf den neuen Wert geändert worden, und Philip Chin wäre aus der Ansicht verschwunden.
Wenn eine Ansicht (z.B. "View2") erstellt wird, welche die Ansicht "SalesEmployee" referenziert, werden alle Aktualisierungen oder Einfügungen in "View2" zurückgewiesen, die dem WITH CHECK OPTION-Kriterium für "SalesEmployee" widersprechen, auch wenn "View2" ohne WITH CHECK OPTION definiert ist.
Status regulärer Ansichten
Reguläre Ansichten erstellen
Reguläre Ansichten ändern
Reguläre Ansichten löschen
Reguläre Ansichten aktivieren und deaktivieren
Daten in regulären Ansichten durchsuchen
Systemtabellendaten anzeigen
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |