Oracle 中有没有办法在GRANT someRole TO someUser;
触发器中执行命令?
我试过了,但它似乎不起作用。
非常感谢。
大多数 DDL 语句在触发器中是不允许的,因为它们强制执行 COMMIT。此规则的少数例外仅适用于系统事件触发器(启动、关闭等),但似乎此触发器不是系统触发器。参考这里。
分享和享受。
不建议在触发器中使用 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;
请让我知道这是否适合您。
谢谢,阿迪亚