Oracle是否有办法在触发器内执行GRANT someRole TO someUser;
命令?
我试了一下,但似乎没有用。
非常感谢。
答案 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;
如果适合您,请告诉我。
谢谢, 阿迪亚