作为系统用户,我创建了一个新用户并授予他dba权限:GRANT dba TO user_bdda_adminProjet
我试图将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;
/
但是当我尝试执行此脚本时,我收到以下错误:
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
是一个角色,而不是特权。
通过角色获得的权限不是“活跃的”#34;在PL / SQL中。您需要将DBA_ROLE_PRIVS
上的选择权限直接授予用户。