Anfang des Inhaltsbereichs

CREATE VIEW-Anweisung (create_view_statement) 

Die CREATE VIEW-Anweisung (create_view_statement) definiert eine View-Tabelle (siehe Tabelle). Eine View-Tabelle ist nie physisch vorhanden, sondern wird erst aus den Zeilen der zugrundeliegenden Basistabelle(n) gebildet, wenn in einer SQL-Anweisung diese View-Tabelle angegeben wird.

Syntax

<create_view_statement> ::= CREATE [OR REPLACE] VIEW <table_name> [(<alias_name>,...)] AS <query_expression> [WITH CHECK OPTION]

table_name, alias_name, query_expression

Erläuterung

Die Ausführung der CREATE VIEW-Anweisung führt zur Ablage von Metadaten im Katalog, die die View-Tabelle beschreiben.

Die View-Tabelle ist jederzeit identisch mit der Tabelle, die Sie als Ergebnis des QUERY-Ausdrucks (query_expression) erhalten würden. Der QUERY-Ausdruck darf keine Parameterspezifikation enthalten. Der QUERY-Ausdruck darf keine temporäre Tabelle und keinen Ergebnistabellennamen referenzieren.

Kein Tabellenausdruck der QUERY-Spezifikation im QUERY-Ausdruck der CREATE VIEW-Anweisung darf einen QUERY-Ausdruck enthalten.

Wenn eine durch den QUERY-Ausdruck selektierte Spalte vom Datentyp LONG ist, dann muß die FROM-Klausel genau einen Tabellennamen enthalten, dem genau eine Basistabelle zugrundeliegt.

Der Benutzer muß das SELECT-Privileg für alle Spalten besitzen, die in der Viewdefinition vorkommen. Der Benutzer ist Eigentümer der View-Tabelle und besitzt mindestens das SELECT-Privileg dafür. Er darf das SELECT-Privileg für alle Spalten der View-Tabelle, die sich aus Spalten ableiten, für die er das Recht zur Weitergabe des SELECT-Privilegs besitzt, vergeben. Das INSERT-, UPDATE- und DELETE-Privileg besitzt er nur dann, wenn er die entsprechenden Privilegien für die der View-Tabelle zugrundeliegenden Tabellen besitzt, und wenn die View-Tabelle änderbar ist. Diese Privilegien darf er nur dann weitergeben, wenn er für alle der View-Tabelle zugrundeliegenden Tabellen das Recht besitzt, das jeweilige Privileg weiterzugeben.

OR REPLACE

Wenn OR REPLACE nicht angegeben wird, darf der Tabellenname (table_name) nicht mit dem Namen einer existierenden View-Tabelle übereinstimmen.

Wenn OR REPLACE angegeben ist, darf der Tabellenname mit dem Namen einer existierenden View-Tabelle übereinstimmen. Die Definition der existierenden View-Tabelle wird in diesem Fall durch die neue Definition ersetzt. Das Datenbanksystem versucht dabei, vergebene Privilegien der existierenden View-Tabelle an die neue Viewdefinition anzupassen, so daß die Privilegierung der View-Tabelle normalerweise erhalten bleibt. Bei Konflikten, die das Datenbanksystem nicht entscheiden kann, erfolgt ein impliziter Entzug von Privilegien. Bei großen Unterschieden zwischen den beiden Viewdefinitionen kann die CREATE VIEW-Anweisung in folgendem Fall scheitern: Die CREATE VIEW-Anweisung einer auf der existierenden View-Tabelle basierenden View-Tabelle ist auf der neuen Viewdefinition nicht mehr fehlerfrei ausführbar.

Alias-Namen (alias_name)

Die Spaltennamen der View-Tabelle müssen eindeutig sein. Ist das in der durch den QUERY-Ausdruck erzeugten Ergebnistabelle nicht der Fall, müssen Alias-Namen vergeben werden, die die Spaltennamen der View-Tabelle definieren. Die Anzahl der Alias-Namen muß gleich der Anzahl der Spalten der durch den QUERY-Ausdruck erzeugten Ergebnistabelle sein. Wenn keine Alias-Namen angegeben sind, dann werden die Spaltennamen der durch den QUERY-Ausdruck erzeugten Ergebnistabelle für die View-Tabelle übernommen. Die Spaltenbeschreibungen der View-Tabelle werden von den entsprechenden Spalten des QUERY-Ausdrucks übernommen. Die FROM-Klausel des QUERY-Ausdrucks kann eine oder mehrere Tabellen enthalten.

WITH CHECK OPTION

Wenn die CREATE VIEW-Anweisung eine WITH CHECK OPTION enthält, dann muß der Eigentümer der View-Tabelle das INSERT-, UPDATE- oder DELETE-Privileg für die View-Tabelle besitzen.

Die Angabe von WITH CHECK OPTION bewirkt, daß durch die INSERT- oder UPDATE-Anweisung auf der View-Tabelle keine Zeilen erzeugt werden können, die anschließend nicht mehr über die View-Tabelle selektierbar sind, d.h. resultierende Zeilen müssen die Suchbedingung der View-Tabelle erfüllen.

Die CHECK OPTION wird vererbt, d.h. wenn eine View-Tabelle V mit WITH CHECK OPTION definiert wurde und V in der FROM-Bedingung einer änderbaren View-Tabelle V1 vorkommt, dann lassen sich über V1 nur Zeilen einfügen oder ändern, die über V selektiert werden können.

Weitere Begriffe und Informationen

·        Komplexe View-Tabelle

·        Änderbare View-Tabelle

·        INSERT-Privileg für Eigentümer der View-Tabelle

·        UPDATE-Privileg für Eigentümer der View-Tabelle

·        DELETE-Privileg für Eigentümer der View-Tabelle

·        Änderbare Join-View-Tabelle

Ende des Inhaltsbereichs