#sql #oracle
#sql #Oracle
Вопрос:
У меня возникла проблема с созданием триггера, который предоставляет роль каждый раз, когда я создаю нового пользователя, как я могу это сделать?
CREATE TRIGGER grant_role_to_user
AFTER insert ON "here I need the right table"
FOR EACH ROW
BEGIN
GRANT role_1 to : NEW.USERNAME
END;
/
Я попробовал таблицу all_users, dba_users; но это выдает ошибку «невозможно создать триггер для этого представления»
использование oracle 10g
Комментарии:
1. один из способов, который вы можете сделать, это создать процедуру, которую вы будете вызывать, если вам нужно предоставить пользователю права доступа, в процедуре выполнить create user, а затем выполнить предоставление роли.
2. Вам нужен системный триггер, который был бы
on database
. Однако я не уверен, что какое-либо из предоставленных событий DDL фиксирует создание пользователя.
Ответ №1:
Включить GRANT ROLE
в сценарий, который вы используете для создания новых пользователей, т.е.
create user mike identified by lion;
grant role_1 to mike;
Комментарии:
1. я вижу, да, это тоже работает, но есть ли какой-нибудь способ сделать это с помощью триггеров? или это невозможно сделать?
Ответ №2:
Я думаю, вам это не нужно trigger
.
Просто назначьте это role
public
, и каждому пользователю будет назначена эта роль.(включая пользователя, который будет создан в будущем). Но будьте в курсе того, что вы делаете. Вы действительно это имеете в виду.
grant role_1 to public;