Zobrazení v Oracle může být aktualizovatelné za určitých podmínek. Může to být složité a obvykle není vhodné.
Z příručky Oracle 10g SQL:
Poznámky k aktualizovatelným pohledům
Aktualizovatelné zobrazení je takové, které můžete použít k vložení, aktualizaci nebo odstranění řádků základní tabulky. Můžete vytvořit pohled, který bude ze své podstaty aktualizovatelný, nebo můžete vytvořit MÍSTO spouštěče pro jakýkoli pohled, aby bylo možné jej aktualizovat.
Chcete-li zjistit, zda a jakými způsoby lze upravit sloupce inherentně aktualizovatelného zobrazení, dotazujte se na zobrazení datového slovníku USER_UPDATABLE_COLUMNS. Informace zobrazené tímto pohledem mají význam pouze pro inherentně aktualizovatelné pohledy. Aby byl pohled ze své podstaty aktualizovatelný, musí být splněny následující podmínky:
- Každý sloupec v zobrazení musí mapovat na sloupec jedné tabulky. Pokud se například sloupec zobrazení mapuje na výstup klauzule TABLE (nevnořená kolekce), zobrazení není ze své podstaty aktualizovatelné.
- Pohled nesmí obsahovat žádnou z následujících konstrukcí:
- Operátor množiny
- DISTINCT operátor
- Agregační nebo analytická funkce
- klauzule GROUP BY, ORDER BY, MODEL, CONNECT BY nebo START S
- Výraz kolekce v seznamu SELECT
- Poddotaz v seznamu SELECT
- Poddotaz označený POUZE PRO ČTENÍ
- Připojuje se, až na některé výjimky, jak je zdokumentováno v Příručce správce databáze Oracle
Kromě toho, pokud přirozeně aktualizovatelný pohled obsahuje pseudosloupce nebo výrazy, pak nemůžete aktualizovat řádky základní tabulky pomocí příkazu UPDATE, který odkazuje na kterýkoli z těchto pseudosloupců nebo výrazů.
Pokud chcete, aby bylo zobrazení spojení aktualizovatelné, musí být splněny všechny následující podmínky:
- Příkaz DML musí ovlivnit pouze jednu tabulku, která je základem spojení.
- U příkazu INSERT nesmí být pohled vytvořen WITH CHECK OPTION a všechny sloupce, do kterých se vkládají hodnoty, musí pocházet z tabulky se zachovanými klíči. Tabulka se zachovanými klíči je tabulka, pro kterou je každý primární klíč nebo jedinečná hodnota klíče v základní tabulce jedinečný i v zobrazení spojení.
- U příkazu UPDATE musí být všechny aktualizované sloupce extrahovány z tabulky se zachováním klíčů. Pokud byl pohled vytvořen WITH CHECK OPTION, pak musí být sloučené sloupce a sloupce převzaté z tabulek, na které se v pohledu odkazuje více než jednou, chráněny před UPDATE.
- Pokud je u příkazu DELETE výsledkem spojení více než jedna tabulka se zachováním klíčů, Oracle Database odstraní z první tabulky s názvem v klauzuli FROM, ať už byl pohled vytvořen POMOCÍ CHECK OPTION, či nikoli.