Ich muss eine Ansicht über eine Tabelle erstellen und möchte nicht jedes Mal, wenn sich die Tabellenstruktur ändert, die Ansicht ändern. Gibt es eine solche Möglichkeit? Irgendwelche Hinweise darauf geschätzt.Oracle-Ansichten ohne Auswirkungen auf die zugrunde liegenden Änderungen der Tabellenstruktur
0
A
Antwort
0
Wenn Sie nicht alle Felder Ihrer Tabelle angeben möchten, können Sie eine Ansicht mit etwa select *
definieren, auch wenn mir eine solche Lösung nicht gefällt. Sie müssen Ihre Ansicht jedoch immer nach einer Tabelle neu erstellen ändern. Zum Beispiel:
SQL> create table yourTable (a number, b number);
Table created.
SQL> insert into yourTable values (1, 2);
1 row created.
SQL> insert into yourTable values (10, 20);
1 row created.
SQL> create or replace view yourView as select * from yourTable;
View created.
Die Ansicht funktioniert:
SQL> select * from yourView;
A B
---------- ----------
1 2
10 20
Wenn Sie eine Spalte hinzufügen, die Sicht wird es nicht zeigen:
SQL> alter table yourTable add (c number);
Table altered.
SQL> select * from yourView;
A B
---------- ----------
1 2
10 20
Sie benötigen eine Ansicht für den Wiederaufbau zu habe die neue Spalte:
SQL> create or replace view yourView as select * from yourTable;
View created.
SQL> select * from yourView;
A B C
---------- ---------- ----------
1 2
10 20
Wenn Sie eine Spalte löschen, wird Ihre Ansicht ungültig und Sie müssen sie neu erstellen:
SQL> alter table yourTable drop column c;
Table altered.
SQL> select * from yourView;
select * from yourView
*
ERROR at line 1:
ORA-04063: view "ALEK.YOURVIEW" has errors
SQL> create or replace view yourView as select * from yourTable;
View created.
SQL> select * from yourView;
A B
---------- ----------
1 2
10 20