触发器中的GRANT ROLE?

时间:2013-04-17 15:10:22

标签: oracle triggers grant

Oracle是否有办法在触发器内执行GRANT someRole TO someUser;命令? 我试了一下,但似乎没有用。

非常感谢。

2 个答案:

答案 0 :(得分:0)

触发器中不允许使用大多数DDL语句,因为它们会强制执行COMMIT。此规则的少数例外仅适用于系统事件触发器(启动,关闭等),但它不会出现此触发器是系统触发器。参考here

分享并享受。

答案 1 :(得分:0)

建议不要在触发器中使用DDL命令,因为提交事务并且如果出现问题则无法回滚事务。如果它非常重要而你必须这样做,那么只有你应该在触发器中执行DDL命令。也许你可以使用自主交易来实现它。

这是一个例子=

CREATE OR REPLACE TRIGGER my_trigger
  AFTER INSERT ON my_table
   DECLARE
    PRAGMA AUTONOMOUS_TRANSACTION;
   BEGIN
     EXECUTE IMMEDIATE 'GRANT someRole TO someUser';
     COMMIT;
   END;

如果适合您,请告诉我。

谢谢, 阿迪亚