[Oracle] Virtuelle Spalten / Virtual Columns

Drucken
( 0 Votes ) 
Hauptkategorie: Programmieren Kategorie: SQL
Erstellt am 05.03.2012 Zuletzt aktualisiert am 05.03.2012 Geschrieben von Jonny132
Virtuelle Spalten werden dazu verwendet, z.B. berechnete Spalten anzuzeigen.
Der große Vorteil den Virtuelle Spalten bieten ist, dass sie nicht physisch gespeichert werden, indixiert werden können und ebenso können auf eine Virtuelle Spalte Constraints erstellt werden.

Ein Anwendungsfall wäre z.B. der Gehalt eines Mitarbeiters. Der Mitarbeiter bekommt im Monat Beispielsweise ein Bruttogehalt von 2000€ und monatliche Zuschüsse im Wert von 200€.

Wir haben nun die Möglichkeit einfach 2200€ in eine Spalte zu speichern. So können wir jedoch nichtmehr nachvollziehen wieviel er wirklich Verdient und wieviel € Zuschuss sind.

Eine weitere Möglichkeit wäre die 2 Werte getrennt voneinander zu Speichern. In der Abfrage müsste man die Werte nun aber jedesmal wieder zusammenaddieren um sein Tatsächliches Gehalt + Zuschüsse zu bekommen.

Die 3. Möglichkeit ist, 3 Spalten zu erstellen. Eine für das Bruttogehalt, eine für die Zuschüsse und eine für die Summe. Was jedoch wenn sich das Gehalt nun ändert? Die Summenspalte müsste immer manuell nachbearbeitet werden und führt auf lange sicht zu Fehlern. Genau deshalb gibt es Virtuelle Spalten. Diese können dynamisch den Wert berechnen.

Virtuelle Spalten werden folgendermaßen zu einer Tabelle hinzugefügt:
Alter Table Mitarbeiter Add Summe as (nvl(einkommen),0) + nvl(zuschuesse,0));
Diese kann man nun einfach per Select Abfragen:
Select Summe from Mitarbeiter
Hinweis:

Bei einem Update müssen alle Spalten bis auf die Virtuellen Spalten angegeben werden! Ein verkürztes Update-Statement ist nichtmehr möglich.


    Veröffentlichen Sie ihre Kommentare ...