2

私のOracleデータベースにはユーザーがいます(SWEETとしましょう)。SWEETスキーマ内に、AUTO_PARTSというテーブルがあります。

ここで、新しいユーザー(SWEET_CV)を作成し、SWEETのAUTO_PARTSテーブルにビューを作成しました。

CREATE SCHEMA AUTHORIZATION SWEET_CV
   CREATE VIEW SWEET_CV.new_autoparts_view 
      AS SELECT * FROM SWIFT.AUTO_PARTS WHERE PRODUCTNAME = 'ABC'
   GRANT select ON SWEET_CV.new_autoparts_view TO SWEET;

最後のGrantステートメントでエラーORA-01720が発生しました:「SWEET.AUTO_PARTS」の付与オプションが存在しません。だから私は以下をしました。

From SWEET account:
GRANT SELECT ON AUTO_PARTS TO SWEET_CV *WITH GRANT OPTION*
And then From SWEET_CV account:
GRANT SELECT ON SWEET_CV.new_autoparts_view TO SWEET;

両方の助成金は成功し、私はコミットしました。

これで、SWEETにログインして、「select * from SWEET_CV.new_autoparts_view」とクエリを実行すると、行が返されます。しかし、「select * from new_autoparts_view」とクエリすると、テーブルまたはビューが存在しないと表示されます。GRANTをやった後も存在しない理由を教えてください。

newschema(dot)viewnameとして参照せずに、SWEETで新しいスキーマのビューにアクセスしたい

前もって感謝します

4

1 に答える 1

4

SWEETで新しいスキーマのビューに、次のように参照せずにアクセスしたい

SWEETビューを参照するスキーマにシノニムを作成する必要があります。

create synonym sweet.new_autoparts_view for sweet_cv.new_autoparts_view;
于 2012-11-29T23:03:29.437 に答える