ビューとプロシージャは、さまざまなユーザが所有する基本のオブジェクトにアクセスできます。たとえば、usera、userb、userc、userd が別々の 4 名のユーザである場合は、userc.viewc から userd.viewd を作成できます。この userc.viewc は、usera.table から作成された userb.viewb をベースにして作成できます。同じように、プロシージャでも、userd.procd は userc.procc を呼び出すことができ、userc.procc は、usera.tablea に挿入できる userb.procb を呼び出すことができます。
ネストされたビューおよびテーブルには、次の DAC (任意アクセス制御) 規則が適用されます。
ビューを作成するには、ユーザは、そのビューに含まれるすべてのベースオブジェクト (テーブルやビューなど) に対する SELECT 権限が必要です。
ビューにアクセスするには、ビューの所有者は、基本のテーブルまたはビューに対する適切な権限を (管理権限で) 付与されている必要があります。また、ユーザは、ビューに対する適切な権限を付与されている必要があります。
WHERE 句を使用して更新するには、SELECT 権限と UPDATE 権限の両方が必要です。
ユーザがビュー定義内のテーブルを所有している場合は、そのユーザがビューの所有者ではなく、ビューに対するアクセス権を付与されていなくても、ビューを介してテーブルにアクセスできます。
ネストされたプロシージャには、次の DAC 規則が適用されます。
プロシージャを作成する場合、ユーザは、基本となるオブジェクト (たとえば、テーブル、ビュー、またはプロシージャ) に対する権限を必要としません。
プロシージャを実行する場合、プロシージャの所有者は、そのプロシージャが参照するオブジェクトに対する適切な権限を必要とします。
プロシージャによって参照されるすべてのテーブルをユーザが所有する場合でも、プロシージャに対する EXECUTE 権限を付与されていない限り、プロシージャを実行してテーブルにアクセスすることはできません。
この動作については、次の例で説明します。
例 1:user1 が table1 を作成し、user2 が table1 に基づく view2 を作成する
例 2:user2 が table1 にアクセスする procedure2 を作成する
例 3:user1 が table1 を作成し、user2 が table2 を作成し、user3 が table1 と table2 をジョインする view3 を作成する
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |