Aktualisierbare Ansichten
Eine Ansicht kann aktualisierbar oder schreibgeschützt sein.Wenn eine View aktualisierbar ist, können die beim Aufruf dieser View abgerufenen Daten durch die DML-Anweisungen INSERT
, UPDATE
, DELETE
, UPDATE OR INSERT
oder MERGE
geändert werden.In einer aktualisierbaren Ansicht vorgenommene Änderungen werden auf die zugrunde liegende(n) Tabelle(n) angewendet.
Eine schreibgeschützte Ansicht kann mithilfe von Triggern aktualisierbar gemacht werden.Sobald Trigger für eine Ansicht definiert wurden, werden an sie gesendete Änderungen nie automatisch in die zugrunde liegende Tabelle geschrieben, selbst wenn die Ansicht von Anfang an aktualisierbar war.Es liegt in der Verantwortung des Programmierers sicherzustellen, dass die Trigger die Basistabellen nach Bedarf aktualisieren (oder aus ihnen löschen oder einfügen).
Eine Ansicht ist automatisch aktualisierbar, wenn alle folgenden Bedingungen erfüllt sind:
-
die
SELECT
-Anweisung fragt nur eine Tabelle oder eine aktualisierbare Ansicht ab -
die
SELECT
-Anweisung ruft keine gespeicherten Prozeduren auf -
jede nicht in der Ansichtsdefinition vorhandene Spalte der Basistabelle (oder Basisansicht) erfüllt eine der folgenden Bedingungen:
-
es ist nullable
-
es hat einen Nicht-
NULL
-Standardwert -
es hat einen Trigger, der einen zulässigen Wert liefert
-
-
die
SELECT
-Anweisung enthält keine Felder, die von Unterabfragen oder anderen Ausdrücken abgeleitet sind -
die
SELECT
-Anweisung enthält keine Felder, die durch Aggregatfunktionen (MIN
,MAX
,AVG
,SUM
,COUNT
,LIST
usw.), statistische Funktionen (CORR
,COVAR_POP
,COVAR_SAMP
, etc.), lineare Regressionsfunktionen (REGR_AVGX
,REGR_AVGY
, etc.) oder jede Art von Fensterfunktion -
die
SELECT
-Anweisung enthält keineORDER BY
-,GROUP BY
- oderHAVING
-Klausel -
die
SELECT
-Anweisung enthält weder das SchlüsselwortDISTINCT
noch zeilenbeschränkende Schlüsselwörter wieROWS
,FIRST
,SKIP
,OFFSET
oderFETCH