Ersetzt eine Ansichtsdefinition durch eine geänderte Version.
ALTER VIEW [ owner.]view-name [ ( column-name, ... ) ] AS query-expression [ WITH CHECK OPTION ]
ALTER VIEW [ owner.]view-name { SET HIDDEN | RECOMPILE | DISABLE | ENABLE }
AS-Klausel Die SELECT-Anweisung, auf der die Ansicht basiert. Die SELECT-Anweisung darf sich nicht auf lokale temporäre Tabellen beziehen. Außerdem kann query-expression eine GROUP BY-, HAVING-, WINDOW- oder ORDER BY-Klausel enthalten sowie UNION, EXCEPT, INTERSECT oder einen allgemeinen Tabellenausdruck.
Die Semantik von Abfragen bestimmt, dass die Reihenfolge der zurückgegebenen Zeilen nicht definiert ist, es sei denn, die Abfrage kombiniert eine ORDER BY-Klausel mit einer TOP- oder FIRST-Klausel in der SELECT-Anweisung.
WITH CHECK OPTION-Klausel Die WITH CHECK OPTION-Klausel weist alle Aktualisierungen und Einfügungen der Ansicht zurück, die nicht den Kriterien der von den für query-expression festgelegten Werten entsprechen.
SET HIDDEN-Klausel Verwenden Sie die SET HIDDEN-Klausel, um die Definition der Ansicht zu verschleiern und die Ansicht zu verbergen, z.B. in Sybase Central. Explizite Referenzen zur Ansicht funktionieren allerdings weiterhin.
Der SET HIDDEN-Vorgang ist irreversibel.
RECOMPILE-Klausel Verwenden Sie die RECOMPILE-Klausel, um Spaltendefinitionen für die Ansicht neu zu erstellen. Diese Klausel hat dieselbe Funktion wie die ENABLE-Klausel, nur dass Sie erstere auf eine Ansicht anwenden können, die nicht deaktiviert ist. Wenn eine Ansicht neu kompiliert wird, stellt der Datenbankserver die Spaltenprivilegien auf Basis der in der neuen Ansichtsdefinition angegebenen Spaltennamen wieder her. Die vorhandenen Privilegien gehen verloren, wenn eine Spalte nach der Neukompilierung nicht mehr vorhanden ist.
DISABLE-Klausel Verwenden Sie die DISABLE-Klausel, um die Verwendung der Ansicht durch den Datenbankserver zu deaktivieren.
ENABLE-Klausel Verwenden Sie die ENABLE-Klausel, um eine deaktivierte Ansicht zu aktivieren. Ein Aktivieren der Ansicht bewirkt, dass der Datenbankserver die Spaltendefinitionen für die Ansicht neu erstellt. Bevor Sie eine Ansicht aktivieren, müssen Sie alle Ansichten aktivieren, von denen diese abhängt.
Im query-expression kann eine TOP n-, FIRST- oder LIMIT-Klausel angegeben werden, auch wenn er keine ORDER BY-Klausel enthält. Es wird höchstens die angegebene Zeilenanzahl zurückgegeben, aber die Reihenfolge der zurückgegebenen Zeilen ist nicht definiert. Eine ORDER BY-Klausel kann also angegeben werden, ist aber nicht erforderlich. Wenn in einer Abfrage eine Ansicht verwendet wird, bestimmt ORDER BY in der Ansicht nicht die Reihenfolge der Zeilen in der Abfrage, auch wenn die FROM-Klausel keine anderen Tabellen enthält. Das bedeutet, dass ORDER BY nur dann für eine Ansicht verwendet werden sollte, wenn es benötigt wird, um die Zeilen auszuwählen, die in eine TOP n-, FIRST- oder LIMIT-Klausel einbezogen werden sollen. Andernfalls hat die ORDER BY-Klausel keine Auswirkungen und wird vom Datenbankserver ignoriert.
Wenn Sie eine ALTER VIEW-Anweisung für eine Ansicht ausführen, die einen oder mehr INSTEAD OF-Trigger hat, wird ein Fehler zurückgegeben. Sie müssen den Trigger löschen, bevor die Ansicht gelöscht oder geändert werden kann.
Wenn Sie eine Ansicht eines anderen Eigentümers ändern, müssen Sie den Namen qualifizieren, indem Sie den Eigentümer eingeben (z.B. GROUPO.ViewSalesOrders). Wenn Sie den Namen nicht qualifizieren, sucht der Datenbankserver nach einer Ihnen gehörenden Ansicht mit diesem Namen und ändert sie. Wenn eine solche nicht vorhanden ist, wird ein Fehler zurückgegeben.
Wenn Sie eine Ansicht ändern, werden vorhandene Privilegien für die Ansicht beibehalten und müssen nicht neu zugeordnet werden. Anstatt die ALTER VIEW-Anweisung zu verwenden, können Sie die Ansicht auch löschen und neu erstellen, indem Sie die DROP VIEW- bzw. die CREATE VIEW-Anweisung verwenden. Wenn Sie dies jedoch tun, müssen die Privilegien für die Ansicht neu zugeordnet werden.
In einer Abfrage kann eine TOP n-, FIRST- oder LIMIT-Klausel angegeben werden, auch wenn er keine ORDER BY-Klausel enthält. Es wird höchstens die angegebene Zeilenanzahl zurückgegeben, aber die Reihenfolge der zurückgegebenen Zeilen ist nicht definiert. Eine ORDER BY-Klausel kann also angegeben werden, ist aber nicht erforderlich. Wenn in einer Abfrage eine Ansicht verwendet wird, bestimmt ORDER BY in der Ansicht nicht die Reihenfolge der Zeilen in der Abfrage, auch wenn die FROM-Klausel keine anderen Tabellen enthält. Das bedeutet, dass ORDER BY nur dann für eine Ansicht verwendet werden sollte, wenn es benötigt wird, um die Zeilen auszuwählen, die in eine TOP n-, FIRST- oder LIMIT-Klausel einbezogen werden sollen. Andernfalls hat die ORDER BY-Klausel keine Auswirkungen und wird vom Datenbankserver ignoriert.
Nachdem die Ansichtsänderung mit Syntax 1 abgeschlossen ist, rekompiliert der Datenbankserver die Ansicht. Wenn es abhängige Ansichten gibt, versucht der Datenbankserver diese je nach Typ der durchgeführten Änderung ebenfalls zu kompilieren. Wenn Sie eine Änderung durchgeführt haben, die sich auf eine abhängige Ansicht auswirkt, müssen Sie möglicherweise auch die Definition für die abhängige Ansicht ändern.
Wenn die SELECT-Anweisung, die die Ansicht definiert, ein Sternchen (*) enthält, kann sich die Anzahl der Spalten in der Ansicht ändern, wenn Spalten in den Basistabellen hinzugefügt oder gelöscht wurden. Die Namen und Datentypen der Ansichtsspalten können sich ebenfalls ändern.
Syntax 1 Diese Syntax wird verwendet, um die Struktur der Ansicht zu ändern. Anders als bei Tabellenänderungen, wo sich die Änderungen auf einzelne Spalten beschränken können, erfordert das Ändern der Struktur einer Ansicht die Ersetzung der gesamten Ansichtsdefinition durch eine neue Definition, ähnlich wie beim Erstellen der Ansicht.
Syntax 2 Diese Syntax wird verwendet, um die Attribute für die Ansicht zu ändern, die z.B. festlegen, ob die Ansichtsdefinition verborgen ist.
Wenn Sie SET HIDDEN verwenden, kann die Ansicht entladen und in andere Datenbanken geladen werden. Wenn SET HIDDEN verwendet wird, ist die Definition der Ansicht bei der Fehlerbehandlung mit dem Debugger nicht zu sehen und sie wird auch nicht in den Prozedurprofilen angezeigt. Wenn Sie die Definition einer verborgenen Ansicht ändern wollen, müssen Sie die Ansicht löschen und mit der CREATE VIEW-Anweisung erneut erstellen.
Nachdem Sie die DISABLE-Klausel verwendet haben, steht die Ansicht dem Datenbankserver zur Beantwortung von Abfragen nicht mehr zur Verfügung. Das Deaktivieren einer Ansicht ähnelt ihrem Löschen, mit dem Unterschied, dass die Ansichtsdefinition in der Datenbank bleibt. Das Deaktivieren einer Ansicht deaktiviert auch etwaige abhängige Ansichten. Daher erfordert die DISABLE-Klausel einen exklusiven Zugriff nicht nur auf die Ansicht, die deaktiviert wird, sondern auch auf alle abhängigen Ansichten, da diese ja auch deaktiviert werden.
Sie müssen Eigentümer der Ansicht sein oder eines der folgenden Privilegien haben:
Außerdem benötigen Sie die SELECT-Berechtigung für die zugrunde liegenden Objekte der Ansicht.
Automatisches Festschreiben (Autocommit).
Alle Prozeduren und Trigger werden vom Speicher entladen, sodass jede Prozedur oder Trigger, der die Ansicht referenziert, der neuen Ansichtsdefinition entspricht. Das Entladen und Laden von Prozeduren und Triggern kann sich auf die Performance auswirken, wenn Sie Ansichten häufig ändern.
SQL/2008 Erweiterung des Herstellers.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |