Создание триггера, который предоставляет роль каждому новому созданному пользователю

#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;