2016-04-25 3 views
0

にテーブルを選択することは不可能でPL/SQLは、私は新しいユーザーを作成し、彼にDBA権限を付与します。GRANT dba TO user_bdda_adminProjetシステムユーザとしてトリガ

私はトリガー(IのdidnにDBA_ROLE_PRIVSテーブルに見えるようにしようとしています

CREATE OR REPLACE TRIGGER my_trigger 
INSTEAD OF 
    INSERT ON vueEnquete 
    FOR EACH ROW 
DECLARE 
    tmp int; 
BEGIN 
    SELECT COUNT(*) INTO tmp FROM DBA_ROLE_PRIVS; 
    ... 
    ... 
END; 
/

をしかし、私はこのスクリプトを実行しようとすると、私は次のエラーました::「が必要かどうt)が私に言うこと自由に感じ、すべての私のコードを貼り付け異なる見れ

Erreur(6,3): PL/SQL: SQL Statement ignored 
Erreur(6,39): PL/SQL: ORA-00942: table or view does not exist 

をフォーラムでは、一般的に問題はユーザーにはテーブルに対する権限がないことがわかりました。

しかし、私は実行時に、私はちょうど私のトリガーで行をコメント場合は、私のユーザー(トリガのうち)のみuser_bdda_adminProjet次の行として、それは完全に

SELECT COUNT(*) FROM DBA_ROLE_PRIVS; 

に動作します。また、それはどのなしで実行エラー、私はこのエラーが特にこの行にあると思います。

ご協力いただきありがとうございました。さらに詳しい情報が必要な場合はお気軽にお問い合わせください。

+0

なぜトリガーでデータ辞書を照会する必要がありますか? –

答えて

1

dbaは特権ではありません。

ロールで取得した権限は、PL/SQLでは「アクティブ」ではありません。 DBA_ROLE_PRIVSの選択特権をユーザーに直接付与する必要があります。

+0

私はそれを知らなかった、説明のおかげで! は、私は私のユーザーシステムとしてこれをした: 'GRANT SELECT ON DBA_ROLE_PRIVS user_bdda_adminProjet TO;' が、エラー「ORA-01031:権限が不足」だ 私はより多くの特権だ、他のユーザーがいるとは思わないがシステムよりも... – KrazyMonkey

+0

@KrazyMonkeyその特権を与えるために 'SYSTEM'または' SYS'にする必要があります。 –

+0

システムとして 'DBA_ROLE_PRIVS TO GRANT SELECT TO user_bdda_adminProjet;'を実行しましたが、特権が不十分です。エラー:/ – KrazyMonkey

関連する問題