sql >> Databáze >  >> RDS >> Oracle

Je v Oracle možné VLOŽIT nebo AKTUALIZOVAT záznam prostřednictvím pohledu?

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.


  1. Rychlé tipy pro opravu a obnovu databáze SQL bez zálohování

  2. Jak zvládnout fragmentaci sloupce auto_increment ID v MySQL

  3. Jak seskupit přehled v Accessu 2016

  4. Manipulace s databázemi SQL pomocí PyQt:Základy