Databases Reference
In-Depth Information
15.3
Änderungen in Views
In diesem Abschnitt werden wir feststellen, dass den Views trotz all ihrer Vortei-
le enge Grenzen gesetzt sind, sobald wir sie in anderen DML-Anweisungen als
select
nutzen. Grundsätzlich können wir die Anweisungen
insert
,
update
und
delete
auch auf Views anwenden. Das RDBMS versucht dann geeignete
Anweisungen auf die an der Definition der View beteiligten Tabellen zu generie-
ren
2
. Wenn in der View
create view billigalben as
select
*
from alben
where preis<5.00
die Tabelle
alben
aus Listing 15.1 beteiligt ist, werden die folgenden Anweisun-
gen problemlos ausgeführt:
insert into billigalben
values('Asterix', 11,'Asterix und der Afernerschild',3.50,1972);
update billigalben
set titel='Asterix und der Avernerschild' where band=11;
delete from billigalben where reihe='Asterix' and band=11;
Wir sollten aber überrascht sein, dass das RDBMS eine Anweisung wie
Listing 15.6:
insert
in eine View
insert into billigalben
values('Asterix',34,'Asterix&Obelix feiern Geburtstag',10.00,2009);
fehlerfrei ausführt. Der Datensatz genügt nicht dem Prädikat
preis<5.0
der definierenden
select
-Anweisung der View und wird bei einem
select
auf
die View
billigalben
gar nicht gefunden. Ein ähnliches Phänomen ergibt sich
für
Listing 15.7:
update
einer View
update billigalben set preis=5.00
Ein anschließender
select
auf die View liefert uns keinen einzigen Datensatz
mehr! Tatsächlich überprüft das RDBMS nicht, ob
2
Änderungen sind auch für Views im Standard vorgesehen, sind aber nicht in Systemen wie H2 im-
plementiert. Die Beispiele für Änderungen wurden in diesem Kapitel mit dem RDBMS IBM Informix
getestet.