есть ли способ в Oracle выполнить команду GRANT someRole TO someUser;
внутри триггера?
Я пробовал, но он не работает.GRANT ROLE внутри триггера?
Большое спасибо.
есть ли способ в Oracle выполнить команду GRANT someRole TO someUser;
внутри триггера?
Я пробовал, но он не работает.GRANT ROLE внутри триггера?
Большое спасибо.
Большинство операторов DDL не допускаются в триггеры, поскольку они вынуждают COMMIT выполнять. Несколько исключений из этого правила применимы только к триггерам системных событий (запуск, выключение и т. Д.), Но он не отображается, этот триггер является системным триггером. Ссылка here.
Делитесь и наслаждайтесь.
Не рекомендуется использовать команды 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;
Пожалуйста, дайте мне знать, если это работает для вас.
Спасибо, Адитья
почему бы вы когда-нибудь хотите сделать это? – Woot4Moo
подумайте о триггере LOGON. – jlnme
Я этого не пробовал, но, возможно, через 'EXECUTE IMMEDIATE'? –