View

<< Feld | IBExpert | Stored Procedure >>

Die deutschsprachige Dokumentation wird seit dem 26. Juli 2016 nicht mehr gepflegt. Aktuelle und vollständige Dokumentation finden Sie auf der englischsprachigen Webseite: IBExpert Documentation


View

Ein View ist ein gespeicherter SELECT aus einer oder mehrerer Tabellen. Die Zeilen, die zurückgegeben werden, werden durch die SELECT-Anweisung, die die Spalten der Quelltabelle auflistet definiert. Nur die View-Definition ist in der Datenbank gespeichert, es repräsentiert nicht direkt physikalisch gespeicherte Daten. Der WHERE-Befehl kann ebenfalls verwendet werden. Ein View hat keine Eingabeparameter.

Ein View kann verglichen werden mit einer virtuellen Tabelle. Er kann in fast allen Aspekten, wie eine Tabelle behandelt werden, indem er als Grundlage für alle Abfragen oder sogar, in manchen Fällen, für Aktualisierungen verwendet werden kann. Es ist möglich eine SELECT, PROJECT, JOIN und UNION-Operation auf Views durchzuführen, als wären sie Tabellen.

Views geben dem Endbenutzer eine personalisierte Version der Tabellen in einer Datenbank und vereinfachen auch den Datenzugriff, indem sie Details über die Art und Weise, wie Informationen über mehrere Tabellen verteilt werden, verbergen. Sie bieten auch Sicherheit durch das Verbergen von bestimmten Spalten in Tabellen vor verschiedenen Benutzern. Firebird/InterBase® ermöglicht die Zuweisung von Benutzerrechten auf den View und nicht auf die darunter liegende Tabelle.

Vorteil von Views (und Stored Procedures): da diese Teil von Firebird oder InterBase® sind, ist es irrelevant, welches Frontend anschließend verwendet wird, sei es Delphi, PHP oder andere.

Sie ermöglichen dem Entwickler die Denormalisierung von Daten, das Kombinieren von Informationen aus zwei oder mehreren Tabellen in eine einzige, virtuelle Tabelle. Anstatt eine tatsächliche Tabelle mit doppelten Daten zu erzeugen, kann ein View mit SELECT, JOIN und WHERE erzeugt werden. Selbst wenn Sie die darunter liegende Struktur der entsprechenden Tabellen ändern, bleibt der View konstant.

Views können nicht sortiert werden, sie stellen lediglich das Resultat eines bestimmten SELECTs dar. (Ein View kann daher verglichen werden mit einer gespeicherten Abfrage). Die ORDER BY Anweisung kann in einem View nicht verwendet werden (die Datensätze werden angezeigt, wie vom Optimierer festgelegt, was nicht immer intelligent ist!). In so einem Fall müsste eine Stored Procedure verwendet werden (Stored Procedures sind in jedem Fall flexibler und bieten mehr Kontrolle).

Views können beispielsweise für interne Telefonlisten verwendet werden, oder wenn Informationen von mehr als einer Tabelle verlinkt werden müssen, z.B. das erste modulare Ergebnis muss mit dem zweiten Ergebnis verlinkt werden.

Die darunter liegende SELECT-Definition kann alle Performance Features einer Select-Abfrage (Query) auf einer Tabelle enthalten, sie unterliegt jedoch folgenden Einschränkungen:

  1. Alle Spalten müssen explizit festgelegt werden, so dass der View immer dieselben Spalten in korrekter Reihenfolge wiedergibt.
  2. Wenn auf eine SELECT *-Anweisung in einem View referenziert wird, wird das Ergebnis in der Spaltensequenz der Definition der darunter liegenden Tabelle zurückgegeben und kann daher verschiedene Ergebnisse liefern, falls später Änderungen an der Tabellenstruktur vorgenommen wurden.
  3. Es können keine ORDER BY-Anweisungen verwendet werden.
  4. Indizes können nur in Spalten der Basistabelle platziert werden, nicht in einer Viewtabelle. Wenn der View erzeugt wird, werden diese Indizes automatisch verwendet.
  5. Eine Viewspaltendefinition kann eine oder mehrere Spalten enthalten, die auf einem Expression basieren, die die Ergebnisse von zwei Spalten kombiniert. Der Expression muss einen einzelnen Wert zurückgeben und kann nicht einen Array oder ein Array-Element zurückgeben. Wenn der View einen Expression enthält, wird die Viewspaltenoption benötigt.
    Bitte beachten: Spalten, die in dem Wert-Expression verwendet werden, müssen bereits vorhanden sein, bevor der Expression definiert werden kann.
  6. Die WITH CHECK OPTION ermöglicht es Firebird/InterBase® sicherzustellen, dass eine hinzugefügte oder aktualisierte Zeile in einem View gesehen werden kann, bevor die Operation abgeschlossen werden kann. Verwenden Sie nicht WITH CHECK OPTION für Read-Only-Views.
    Bitte beachten Sie: Sie können nicht aus einem View auswählen, der auf dem Ergebnisatz einer Stored Procedure basiert.

Views ermöglichen eine Datenmodularisierung, die besonders nützlich ist bei komplexen Datenmengen, da ein weiterer View in die Viewdefinition eingebunden werden kann.

Der Benutzer, der einen View erzeugt, ist der Besitzer und besitzt alle Rechte, inklusive der Möglichkeit anderen Benutzern Rechte (GRANT), Roles, Trigger, Views und Stored Procedures zuzuweisen. Ein Benutzer kann die Rechte für einen View haben, ohne Zugriff auf die Basistabelle zu haben. Wenn eine View erzeugt wird muss beachtet werden:

  • Ein Read-Only View benötigt SELECT-Rechte für die darunterliegenden Tabellen.
  • Ein Updatable View benötigt ALL-Rechte für die darunterliegenden Tabellen.

Wenn Sie neu in der Datenbankentwicklung sind, können Sie weitere Informationen im Kapitel Verstehen und Verwenden von Views nachlesen.

zurück zum Seitenanfang

Neuer View / Vieweditor

Ein neuer View kann in einer verbundenen Datenbank entweder mit dem Menüpunkt Datenbank / Neuer View, dem enstprechenden Symbol in der Symbolleiste Neues Datenbankobjekt, oder mit dem Rechstklickmenü des DB Explorers (oder Tastenkombination [Strg + N]) erzeugt werden, wenn der View-Kopf der relevanten, verbundenen Datenbank markiert ist.

Alternativ kann ein neuer View direkt im IBExpert SQL Editor erzeugt werden und als View gespeichert werden.

Der Dialog Neuer View erscheint mit seiner eigenen Symbolleiste:

Der View kann direkt im SQL Dialog erzeugt werden und nachträglich mit dem entsprechenden Symbol oder [Strg + F9] committed werden.

Der Code Formatter wurde in der IBExpert Version 2009.03.25 eingeführt. Mit dem Code Formatter können Sie den Quellcode von Views, Triggern und Stored Procedures formatieren. Über den Menüpunkt Code formatting options ... können Sie ein Reihe von Einstellungen für alle oder für einzelne Anweisungen anpassen. Weiteres hierzu finden Sie im IBExpert Menü Optionen unter Code formatting options ....

SQL

Wenn ein View erzeugt wird, ist es notwendig, einen View-Namen zu definieren, der eindeutig und einmalig in der Datenbank ist. Alle Datenmanipulationsoperationen, wie SELECT, INSERT, UPDATE und DELETE werden mit diesem Namen ausgeführt.

Der View kann im SQL Dialog mit folgender Syntax erzeugt werden:

 CREATE VIEW ViewName (<List_of_field_names>)
 AS
 SELECT <fields_ from _table_name>
 [WITH CHECK OPTION];

Ein Beispiel finden Sie in Firebird/InterBase® in der Beispiel-Datenbank EMPLOYEE:

Der View-Name muss eindeutig sein. Da Firebird/InterBase® nur Viewdefinitionen speichert (d.h. es kopiert nicht die Daten der Tabelle in den View), sind Views sehr abhängig von den, in der Basistabelle gesetzten Indizes, um Daten schnell in der Originaltabelle lokalisieren zu können. Es ist daher wichtig, Views sorgfältig zu ananlysieren und Indizes in den Spalten zu platzieren, die verwendet werden, um Tabellen zu verbinden und Zeilen zu begrenzen.

Die Tabellen und [Feld|Felder]] können einfach durch Ziehen der relevanten Tabelle und des Feldnamens vom DB Explorer und dem SQL Assistenten, in das SQL Skript eingefügt werden und in der enstprechenden Position im SQL Dialog im Neuer View Editor gelöscht werden. Nach der Benennung der View-Felder und dem Einfügen der relevanten Basistabellenfelder, kann der View mit dem enstprechenden Symbol oder [Strg + F9] comitted werden.

Die View-Inhalte resultieren aus den Rückgaben der SELECT-Anweisungen, die, bis auf wenigen Ausnahmen, mit der SQL SELECT-Anweisung übereinstimmen. Die SELECT-Anweisung legt fest, welche Tabellen, Spalten und Zeilen als Teil des Views zurückgegeben werden sollen.

Wenn der View ein aktualisierbarer View ist, kann der optionale WITH CHECK OPTION Parameter auch zur Datenkontrolle verwendet werden.

Die Feldnamen können im View optional anders als in der Basistabelle benannt werden. Wenn nichts anderes definiert wurde, wird der Name der Basistabellenspalte automatisch der Viewfeldname. Wenn Spaltennamen festgelegt werden, müssen sie innerhalb des Views einmalig sein und es muss für jede, vom View zurückgegeben Spalte ein Name definiert werden (auch wenn einige View-Feldnamen den originalen Feldnamen entsprechen). Bitte beachten Sie, dass wenn die SELECT-Anweisung abgeleitete Spalten enthält, ein Spaltenname definiert werden muss.

Wenn der View als Teil einer Abfrage oder in irgendeiner anderen SQL-Anweisung verwendet werden muss, fragt Firebird/InterBase® direkt die Originaldaten ab. Dieses wichtige Feature vesetzt Sie in die Lage, Änderungen an der darunter liegenden Tabellenstruktur vorzunehmen, ohne die Datenansicht des Benutzers oder die Ansicht des Programms, welches sich auf den View statt auf die Basistabelle bezieht, zu beeinflussen.

Kompilieren Sie anschließend den neuen View mit dem enstprechenden Symbol in der Symbolleiste oder [F9] und weisen Sie, falls gewünscht, ebenfalls mit dem entsprechendem Symbol in der Symbolleiste oder der Tastenkombination [Strg + F8], die Rechte zu.

Neu seit Firebird 2.0: Erweiterungen zu CREATE VIEW

FIRST/SKIP und ROWS Syntaxe und PLAN und ORDER BY Klauseln können jetzt in View-Definitionen verwendet werden.

Ab Firebird 2.0 aufwärts werden Views wie voll funktionsfähige SELECT-Epxressions behandelt. Folglich sind die Klauseln FIRST/SKIP, ROWS, UNION, ORDER BY und PLAN jetzt in Views erlaubt und funktionieren auch dementsprechend.

Die Firebird Versionen 1.5.x verbieten die Verwendung einer PLAN-Subklausel in einer Viewdefinition. Ab 2.0 aufwärts ist PLAN wieder erlaubt.

In Versionen vor 2.0 blockierte Firebird oft nicht den automatischen Writethrough in die darunter liegenden Tabelle, wenn ein oder mehr Trigger in einem normalerweise aktualisierbaren View definiert wurden. Dies könnte bewirken, dass Änderungen unbeabsichtigt zweimal durchgeführt werden, was manchmal zu Datenverfälschung und anderen Missgeschicken führen kann. Ab Firebird 2.0 wurde dieses Fehlverhalten korrigiert: wenn Sie jetzt einen Trigger in einem normalerweise aktualisiserbaren View definieren, werden Änderungen an dem View nicht automatisch an die Tabelle weitergegeben; weder der Trigger und noch sonst etwas wird sich da weiter drum kümmern. Dies ist in Übereinstimmung mit der Beschreibung in InterBase® 6 Data Definition Guide unter Updating views with triggers. Warnung: Einige Entwickler haben Code entwickelt, der aus dem vorher beschriebenen Verhalten Vorteile zieht. Diese Codes sollten für Firebird 2.0 und höher korrigiert werden, sonst könnte es passieren, dass Änderungen die Tabelle überhaupt nicht erreichen.

Syntax

Details zu Syntax finden Sie unter Select Statement & Expression Syntax in dem Kapitel über DML in den Firebird 2.0.4 Release Notes.

Neu seit Firebird 2.1: Spalten-Alias in CREATE VIEW verwenden

Spalten-Alias können jetzt als Spaltennamen in View-Definitionen verwendet werden.

Beispiel

 CREATE VIEW V_TEST AS
   SELECT ID,
          COL1 AS CODE,
          COL2 AS NAME
   FROM TAB;

Siehe auch:
englischsprachig:
SELECT
SELECT Anweisung
CREATE VIEW

zurück zum Seitenanfang

Felder

Die Seite Felder zeigt die aus der Basistabelle ausgewählten Felder (mit ihren neuen View-Namen, sofern diese definiert wurden), zusammen mit ihren Eigenschaften.

Die einzelnen Felder können nicht direkt in diesem Dialog bearbeitet werden; wenn Sie Felder bearbeiten möchten finden Sie hierzu alle Informationen unter Tabelleneditor / Felder. Diese Felder können jedoch hier in aufsteigender oder absteigender Reihenfolge, basierend auf der Spalte, wo sich der Mauszeiger befindet, durch Anklicken des Spaltenkopfes (d.h. Feldname etc.) sortiert werden. Per Doppelklick auf die rechte Kante des Spaltenkopfes kann die Spalte auf ihre ideale Breite justiert werden.

Die Seite Felder bietet den gleichen Rechtsklick-Menü wie der Tabelleneditor.

zurück zum Seitenanfang

Abhängigkeiten

Weiteres finden Sie unter Tabelleneditor / Abhängigkeiten.

Trigger

Weiteres finden Sie unterTabelleneditor / Trigger.

Daten

Weiteres finden Sie unter Tabelleneditor / Daten. Bitte beachten Sie, dass Daten nur in diesem Dialog berabeitet werden können, wenn der View als aktualisierbarer View definiert wurde und alle Bedingungen hierzu erfüllt sind.

Informationen zum Exportieren von View-Daten in verschiedenen Formate und zum Exportieren von View-Daten in eine Datei, in die Zwischenablage oder in die IBExpert Script Executive, finden Sie unter Exportiere Daten und Exportiere Daten in ein Skript.

Beschreibung

Weiteres finden Sie unter Tabelleneditor / Beschreibung.

Rechte

Weiteres finden Sie unter Tabelleneditor / Rechte.

Automatische Rechtezuweisung

Das Symbol Automatische Rechtezuweisung (Autogrant)

finden Sie in der Symbolleiste Vieweditor, in der Symbolleiste Prozedureneditor und in der Symbolleiste Triggereditor. Rechte können auch automatisch über die Tastenkombination [Strg + F8] zugewiesen werden. Es ist möglich hier alle Rechte automatisch für Views, Prozeduren und Trigger zuzuweisen.

(Dieses Feature ist nicht in der kostenlosen IBExpert Personal Edition enthalten.)

Dies schreibt allen Benutzern alle Rechte für neu erzeugte Objekte zu und hilft somit dem häufig auftretenden Problem vorzubeugen, dass Entwickler oft viele Objekte für ihre neue Datenbank erzeugen und plötzlich bemerken, dass sie diesen Views, Triggern oder Prozeduren keinerlei Rechte zugewiesen haben.

Wer es vorzieht, die Zuweisung von Rechten einzuschränken, verwendet die Seite Rechte, die in den meisten Objekteditoren angeboten wird, oder den IBExpert Nützliches / Rechtemanager.

Ein UPDATE-Privileg wird auf der betroffenen Tabelle für SELECT-Anweisungen mit einer WITH LOCK-Klausel erteilt.

Erweiterte Unterstützung für Firebird 3.0:

  • Seit IBExpert Version 2014.03.16 werden Firebird 3.0 Packages und Funktionen unterstützt.
  • Support für Stored Funktionen implementiert in IBExpert Version 2014.06.17.
  • Support für Subroutinen implementiert in IBExpert Version 2014.06.17.

Unter dem Menüpunkt Programmeinstellungen / Werkzeuge im IBExpert Menue Optionen muss die Standardeinstellung Rechte automatisch zuweisen bei Kompilierung von Prozeduren, Triggern, Views aktiviert werden, damit diese Funktion greift. Es ist auch möglich festzulegen, ob vorhandene Rechte zunächst entzogen werden sollen, bevor neue Rechte zugewiesen werden (Vorhandene Rechte vor autom. Rechtezuweisung entziehen).

zurück zum Seitenanfang

DDL

Weiteres finden Sie unter Tabelleneditor / DDL.

Versionshistorie

Die Seite Versionshistorie bietet eine eindeutige und automatische Dokumentation. Sie steht im Vieweditor, Prozedureneditor und im Triggereditor zur Verfügung. Es werden die verschiedenen Versionen des Views, der Prozeduren oder der Trigger angezeigt (wenn vorhanden) und die Daten, wenn Änderungen vorgenommen wurden, zusammen mit den verantwortlichen Personen aufgelistet.

Wenn die Seite Versionshistorie zum ersten Mal geöffnet wird, bittet IBExpert um Bestätigung, da zunächst bestimmte Systemtabellen für die Protokollierung der Versionshistorie erzeugt werden müssen. Dies muss nur einmal bestätigt werden. Danach erscheint die Versionshistorie sofort in allen relevanten Editoren und alle Objektänderungen werden automatisch gespeichert.

Versionen können in dem Feld Versionsinfo mit dem Rechtsklickmenüpunkt Lösche Version[Entf] oder Lösche Duplikate [Umschalt + Strg + Entf] markiert und gelöscht werden.

Die SQL Skripte der verschiedenen Versionen können auf der Seite Compare Versions (Vergleiche Versionen) verglichen werden.

Die Pull-down-Liste oberhalb der zwei Skriptfelder ermöglicht die Auswahl verschiedener Versionen ohne zur Versionsseite zurückwechseln zu müssen. Änderungen werden durch farbige Balken markiert. Sie zeigen an, in welcher Zeile Änderungen vorgenommen wurden. Den Farbcodeschlüssel sehen Sie in der Statusleiste des Dialogs, sowie eine Notiz über die Anzahl der Änderungen in den zwei Versionen.

Existiert die IBE$VERSION_HISTORY-Tabelle bereits in Ihrer Datenbank, fügen Sie folgende Änderungen manuell hinzu, wenn Sie die Clientadresse loggen möchten und die RDB$GET_CONTEXT-Funktion verfügbar ist:

Neues Feld in die IBE$VERSION_HISTORY-Tabelle einfügen:

     ALTER TABLE IBE$VERSION_HISTORY ADD IBE$VH_CLIENT_ADDRESS VARCHAR(32) CHARACTER 
     SET NONE;

Zusätzliche Code-Zeile in den IBE$VERSION_HISTORY_BI Trigger einfügen:

     NEW.IBE$VH_CLIENT_ADDRESS = RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS'); 

zurück zum Seitenanfang

Skript erneut erzeugen

Die Seite Skript erneut erzeugen zeigt das vollständige SQL Skript für den View an, angefangen mit dem Löschbefehl DROP VIEW und der Anweisung zur erneuten Erzeugung des aktuellen Views. Dies ist sehr nützlich, wenn Fehler in einem View auftreten, wo es fast unmöglich ist, bedingt durch die Komplexität des Views oder die vielen verschiedenen Versionen, die Fehlerquelle zu finden.

Das Skript kann sogar direkt in diesem Dialog bearbeitet werden und die Änderungen übergeben werden. Das Rechtsklickmenü ist dasselbe, wie im SQL Editor und ermöglicht viele weitere Operationen direkt im SQL Skript (weiteres finden Sie unter SQL Editor Menü).

zurück zum Seitenanfang

Plananalyse

Weiteres finden Sie unter SQL Editor / Plananalyse. Bitte beachten Sie, das die Info über die Leistung auf der Seite Plananalyse im Vieweditor nicht zur Verfügung steht.

Vergleich

Weiteres finden Sie unter Tabelleneditor / Vergleich.

To-Do

Weiteres hierzu unter Tabelleneditor / To-Do.

zurück zum Seitenanfang

Aktualisierbarer View und nur-lesbarer View

Der einfachste und schnellste Weg einen aktualisierbare View zu erzeugen ist, die Option Create View from Table (Erzeuge View aus Tabelle) im IBExpert Tabelleneditor zu verwenden und einen Trigger zu erzeugen (Checkbox-Optionen zur Erzeugung von BEFORE INSERT, BEFORE UPDATE oder BEFORE DELETE). Vervollständigen Sie den Triggertext im unteren Codeeditor-Fenster (beachten Sie die unten aufgeführten Bedingungen) und der aktualisierbare View ist komplett!

Wenn der View ein aktualisierbarer View sein soll, muss der optionale Parameter WITH CHECK OPTIONS zur Kontrolle der Dateneingabe verwendet werden. Wenn der Parameter verwendet wird, können nur die Werte entsprechend der SELECT-Anweisung des Views eingegeben werden. Ein View muss alle folgenden Bedingungen erfüllen, wenn er zur Datenaktualisierung in der Basistabelle verwendet werden soll:

  1. Der View basiert auf einer einzelnen Tabelle oder einem anderen aktualisierbaren View. Verbundene Tabellen resultieren in einen nur-lesbaren View. (Dasselbe trifft zu, wenn eine http://ibexpert.net/ibe/index.php?n=Doc.Query#Subquery | Subquery]] in der SELECT-Anweisung verwendet wird.)
  2. Alle Spalten in der Basistabelle, die nicht Teil des Views sind, erlauben NULLs. Diese Bedingung macht es erforderlich, dass der Primärschlüssel der Basistabelle in dem View enthalten ist.
  3. Die SELECT-Anweisung enthält keinen DISTINCT-Operator. Diese Einschränkung könnte Einfluss auf das Löschen von doppelten Zeilen haben, da Firebird/InterBase® nicht bestimmen kann, welche Zeile aktualisiert werden soll.
  4. Die SELECT-Anweisung enthält keine Aggregatfunktionen oder GROUP BY- oder HAVING-Operatoren.
  5. Die SELECT-Anweisung enthält keine Stored Procedures oder benutzerdefinierte Funktionen.
  6. Die SELECT Anweisung enthält keine verbundenen Tabellen.

In einer normalisierten Datenbank ist ein View für gewöhnlich aktualisierbar, wenn er auf einer einzelnen Tabelle basiert und wenn die Primärschlüssel-Spalten oder Spalten in der View-Definition enthalten sind.

Es ist jedoch möglich Daten in einen View einzugeben und dann die neuen Daten / Datenänderungen bestimmten einzelnen Tabellen unter Verwendung einer Kombination von benutzerdefinierten referntialen Beschränkungen, Triggern und eindeutigen Indizes zuzuordnen.

zurück zum Seitenanfang

Definieren eines Views mit der CHECK OPTION

Wenn ein View aktualisierbar ist, können INSERT-, UPDATE-, oder DELETE-Operationen in dem View durchgeführt werden, um neue Zeilen in die Basistabelle(n) einzufügen oder vorhandene Zeilen zu löschen oder zu modifizieren.

Die Aktualsierung könnte potentiell bewirken, dass die modifizierte Zeile nicht mehr Teil des Views ist und was passiert, wenn der View verwendet wird, um eine Zeile einzufügen die nicht mit der View-Definition übereinstimmt?

Um zu verhindern, dass Aktualisierungen oder Eingaben nicht mit der WHERE-Bedingung des Views übereinstimmen, muss die WITH CHECK OPTION nach der SELECT-Anweisung festgelegt werden. Diese Klausel veranlasst Firebird/InterBase® eine UPDATE oder INSERT-Anweisung mit einer WHERE-Bedingung abzugleichen. Wenn die modifizierte oder eingegebene Zeile nicht mit der View-Definition übereinstimmt, schlägt die Anweisung fehl und Firebird/InterBase® gibt eine Fehlermeldung zurück.

zurück zum Seitenanfang

Bearbeite View

Ein View kann im Vieweditor bearbeitet werden, der per Doppelklick auf den View-Namen im DB Explorer geöffnet werden kann. Alternativ können Sie den Rechtsklickmenüpunkt Bearbeite View oder die Tasten [Strg + 0] verwenden.

Änderungen können direkt auf der SQL Eingabeseite vorgenommen werden; Felder, Abhängigkeiten und Trigger können vor der Löschung eines Feldes auf ihren entsprechenden Seiten überprüft werden . Vor Firebird Version 2.5 war der einzige Weg, einen View zu ändern, die View-Definition zu löschen und den View erneut zu erzeugen oder, wie es IBExpert gemacht hat, einen neuen View mit demselben Namen zu erzeugen und den alten nach dem Commit damit zu ersetzen.

Firebird 2.5 bietet sowohl ALTER VIEW als auch CREATE OR ALTER VIEW an. ALTER VIEW ermöglicht die Änderung der Viewdefinition ohne die alte Version und all ihre Abhängigkeiten neu erzeugen (löschen und neu erzeugen) zu müssen. Mit CREATE OR ALTER VIEW wird die ViewDefinition, wenn vorhanden, geändert (wie mit ALTER VIEW) oder, wenn nicht vorhanden, erzeugt.

Syntax

 create [ or alter ] | alter } view <view_name>
   [ ( <field list> ) ] 
 as <select statement>

Example

 create table users (
   id integer,
   name varchar(20), 
   passwd varchar(20)
 );

 create view v_users as
   select name from users;

 alter view v_users (id, name) as
   select id, name from users;

Source: Firebird 2.5 Release Notes, July 2, 2008

zurück zum Seitenanfang

View erneut erzeugen

Neu seit Firebird 2.0: Die RECREATE VIEW-Anweisung steht jetzt in DDL zur Verfügung. Die Semantik ist dieselbe, wie für andere RECREATE-Anweisungen.

Siehe auch:
englischsprachig:
RECREATE VIEW

Lösche View

Wenn ein View gelöscht wird, dann ist er für immer gelöscht. Ein View kann nicht gelöscht werden, wenn er anderswo in den Metadaten der Datenbank verwendet wird. Wenn der zu löschende View beispielsweise in der Definition eines anderen Views entalten ist, einer Stored Procedure oder einer CHECK Constraint (Prüfbeschränkung), müssen die abhängingen Objekte erst gelöscht werden, bevor der View gelöscht werden kann. Jede vorhandene Abhängigkeit, kann auf der Seite Vieweditor / Abhängigkeiten angesehen werden. Die meisten Datenbankobjekte können hier dirket auf der Seite Abhängigkeiten gelöscht werden oder mit dem IBExpert Menüpunkt Abhängigkeiten im IBExpert Menü Nützliches durch Verwendung des Rechstklickmenüs auf dem ausgewählten Objekt und dann den Menüpunkt Lösche Objekt wählen oder [Strg + Entf].

Verwenden Sie den Rechtsklickmenüpunkt Lösche View... im DB Explorer (oder [Strg + Entf]) oder, wenn der View bereits im View Editor geöffnet ist, verwenden Sie das Vieweditor Menü (durch Anklicken View oben links zu öffnen), Lösche View.

IBExpert bittet um Bestätigung:

bevor der View endgültig gelöscht wird. Einmal gelöscht, kann der View nicht zurückgeholt werden.

Alternativ kann die DROP VIEW-Anweisung im IBExpert SQL Editor eingegeben werden. Es gilt folgende Syntax:

 DROP VIEW <view_name>;

Um beispielsweise den View PHONE_LIST in der Beispieldatenbank EMPLOYEE zu löschen, sollte die folgende Anweisung verwendet werden:

 DROP VIEW PHONE_LIST;

Bitte beachten Sie, dass ein View nur von seinem Erzeuger, vom SYDBA oder von einem Benutzer mit Betriebssystem-Grundrechten gelöscht werden kann.

Siehe auch:
deutschsprachig:
Erzeuge einen Triggers für einen View
Erzeuge einen View oder eine Prozedur von einem SELECT
englischsprachig:
CREATE VIEW

zurück zum Seitenanfang
<< Feld | IBExpert | Stored Procedure >>