0

Oracle 中有没有办法在GRANT someRole TO someUser;触发器中执行命令?
我试过了,但它似乎不起作用。

非常感谢。

4

2 回答 2

0

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

分享和享受。

于 2013-04-17T16:30:38.493 回答
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;

请让我知道这是否适合您。

谢谢,阿迪亚

于 2013-04-19T06:11:21.377 回答