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

Nelze vytvořit Oracle View s přístupem k objektům jiných schémat, a to i přes udělení oprávnění

Jak je uvedeno v dokumentaci (zvýraznění přidáno):

Pokud máte pouze privilegovaný výběr na podkladové tabulce udělený prostřednictvím role, nemůžete proti němu vytvořit pohled. I když přejdete na roli obecně, budete muset ponechat explicitní udělení nahoře pro všechna zobrazení, která chcete vytvořit.

Myslím, že to souvisí s tím, jak fungují role. S přímým udělením Oracle ví, zda vidíte tabulku v jiném schématu. Pokud udělíte výběr ve svém pohledu někomu jinému, pak když dotazuje pohled, Oracle ví, že existuje řetězec oprávnění. Pokud je vaše přímé přidělení na stole zrušeno, pak existují mechanismy pro zrušení platnosti závislých objektů. Ale co by se mělo stát Privilegium výběru role na stole je zrušeno; nebo je váš přístup k roli zrušen; nebo jen v rámci své vlastní relace, co by se mělo stát, pokud tuto roli zakážete – máte stále přístup k zobrazení? Je to trochu složitější, než se na první pohled zdá.

Naštěstí vytváření pohledů by mělo být relativně vzácné a kontrolovatelné. Většina lidí, kteří přistupují k tabulce prostřednictvím role, na ni nebude muset vytvářet pohled (předpokládám!).

Další možností je vytvořit pohled v ARIEL schéma a poté udělte oprávnění APEX_ARIEL a/nebo roli. Zda je to vhodné, závisí na vašem skutečném dotazu na pohled a vaší motivaci k vytvoření pohledu.




  1. Jak funguje IFNULL() v MariaDB

  2. In-Memory OLTP:Co je nového v SQL Server 2016

  3. MYSQL Vyberte na dvou hodnotách jeden sloupec

  4. jak získat stránkovaný výběr na slick + postgresql