Erstellt eine materialisierte Ansicht.
CREATE MATERIALIZED VIEW [ owner.]materialized-view-name [ ( alt-column-names, ... ) ] [ IN dbspace-name ] AS select-statement [ CHECK { IMMEDIATE | MANUAL } REFRESH ]
alt-column-names : ( column-name [,...] )
alt-column-names-Klausel Verwenden Sie diese Klausel, um alternative Namen für die Spalten in der materialisierten Ansicht anzugeben. Wenn Sie alternative Spalten angeben, muss die Anzahl von Spalten in alt-column-names der Anzahl von Spalten in der select-statement entsprechen. Wenn Sie keine alternativen Spaltennamen angeben, werden als Namen die in der select-statement enthaltenen herangezogen.
IN-Klausel Verwenden Sie diese Klausel, um den DBSpace anzugeben, in dem die materialisierte Ansicht erstellt werden soll. Wenn diese Klausel nicht angegeben ist, wird die materialisierte Ansicht in dem DBSpace erstellt, der in der Option default_dbspace angegeben wurde. Sonst wird der SYSTEM-DBSpace benutzt.
AS-Klausel Verwenden Sie diese Klausel, um in Form einer SELECT-Anweisung die Daten anzugeben, die verwendet werden, um die materialisierte Ansicht zu füllen. Eine Definition einer materialisierten Ansicht kann nur Basistabellen referenzieren, keine Ansichten, anderen materialisierten Ansichten oder temporären Tabellen. select-statement muss Spaltennamen oder einen Aliasnamen enthalten. Wenn Sie alt-column-name angeben, werden diese Namen anstelle der Alias verwendet, die in der select-statement enthalten sind.
Spaltennamen in der SELECT-Anweisung müssen explizit angegeben werden, das Konstrukt SELECT *
kann nicht verwendet werden. Beispiel: Sie können nicht CREATE MATERIALIZED VIEW matview AS SELECT * FROM table-name
angeben. Objektnamen müssen darüber hinaus in der select-statement voll qualifiziert werden.
CHECK-Klausel Verwenden Sie diese Klausel, um die Anweisung ohne Erstellung der Ansicht zu validieren. Wenn Sie die CHECK-Klausel angeben:
Der Datenbankserver führt die normalen Sprachprüfungen durch, die auch durchgeführt würden, wenn CREATE MATERIALIZED VIEW ohne Klausel ausgeführt worden wäre. Eventuell generierte Fehler werden wie üblich zurückgegeben.
Der Datenbankserver führt nicht die eigentliche Erstellung der Ansicht aus, sodass bestimmte Fehler, die zum Erstellungszeitpunkt auftreten würden, nicht generiert werden. Beispiel: Ein Fehler, der angibt, dass der angegebene Ansichtsname bereits existiert, wird nicht generiert. Damit können Sie die CHECK-Klausel verwenden, um beabsichtigte Änderungen an der Definition der Ansicht zu prüfen, ohne einen Namenskonflikt mit der Ansicht befürchten zu müssen.
Wenn CHECK IMMEDIATE REFRESH benutzt wird, prüft der Datenbankserver, ob die Syntax für eine Sofortansicht gültig ist, und gibt eventuelle Fehler zurück.
Es werden keine Änderungen an der Datenbank durchgeführt und im Transaktionslog wird nichts aufgezeichnet.
Ein implizites COMMIT erfolgt zu Beginn der Anweisungsausführung und ein ROLLBACK am Ende, um alle Sperren freizugeben, die während der Ausführung gesetzt wurden.
Wenn Sie eine materialisierte Ansicht erstellen, ist sie eine manuelle Ansicht und nicht initialisiert. Das heißt: Sie hat den Aktualisierungstyp "manuell" und ist noch nicht aktualisiert (mit Daten gefüllt) worden. Um die Ansicht zu initialisieren, führen Sie die Anweisung REFRESH MATERIALIZED VIEW aus oder benutzen die Systemprozedur sa_refresh_materialized_views.
Sie können eine materialisierte Ansicht verschlüsseln, ihre PCTFREE-Einstellung und ihren Aktualisierungstyp ändern sowie ihre Verwendung durch den Optimierer aktivieren oder deaktivieren. Sie müssen allerdings zuerst die materialisierte Ansicht erstellen und dann ALTER MATERIALIZED VIEW verwenden, um diese Einstellungen zu ändern. Die Standardwerte für materialisierte Ansichten zum Erstellungszeitpunkt sind:
NOT ENCRYPTED
ENABLE USE IN OPTIMIZATION
PCTFREE wird je nach Seitengröße der Datenbank eingestellt: 200 Byte für eine 4-kB-Seitengröße und 100 Byte für eine 2-kB-Seitengröße
MANUAL REFRESH
Mehrere Datenbank- und Serveroptionen müssen aktiviert sein, um eine materialisierte Ansicht zu erstellen.
Die Systemprozedur sa_recompile_views wirkt sich nicht auf materialisierte Ansichten aus.
Sie müssen das CREATE MATERIALIZED VIEW-Systemprivileg haben, um materialisierte Ansichten erstellen zu können, deren Eigentümer Sie sind. Außerdem müssen Sie Eigentümer des zugrunde liegenden Objekts sein, das die materialisierte Ansicht referenziert, oder SELECT-Privilegien dafür haben.
Sie müssen das CREATE ANY MATERIALIZED VIEW-Systemprivileg oder das CREATE ANY OBJECT-Systemprivileg haben, um materialisierte Ansichten erstellen zu können, deren Eigentümer andere Benutzer sind.
Während der Ausführung setzt die CREATE MATERIALIZED VIEW-Anweisung Exklusivsperren ohne Blockierung für alle von der materialisierten Ansicht referenzierten Tabellen. Wenn eine der referenzierten Tabellen nicht gesperrt werden kann, schlägt die Anweisung fehl und es wird ein Fehler zurückgegeben.
SQL/2008 Erweiterung des Herstellers.
Das folgende Beispiel erstellt in der SQL Anywhere-Beispieldatenbank eine materialisierte Ansicht, die vertrauliche Informationen über Mitarbeiter enthält. Sie müssen danach eine REFRESH MATERIALIZED VIEW-Anweisung ausführen, um die Ansicht für die Verwendung zu initialisieren, wie im Beispiel gezeigt wird.
CREATE MATERIALIZED VIEW EmployeeConfid2 AS SELECT EmployeeID, Employees.DepartmentID, SocialSecurityNumber, Salary, ManagerID, Departments.DepartmentName, Departments.DepartmentHeadID FROM GROUPO.Employees, GROUPO.Departments WHERE Employees.DepartmentID=Departments.DepartmentID; REFRESH MATERIALIZED VIEW EmployeeConfid2; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |