@DunkanMaklaut
Студент

Как сделать так чтобы триггер срабатывал при входе определенной роли?

Доброго времени суток! я выполняю задание по администрированию БД Oracle, преподаватель сказал создать несколько ролей (Кладовщик, Админ и заказчик)
create role kladovshchik;
create role zakazchik;
create role admin_role;

и дать некоторые привилегии этим ролям. Проблемное для меня задание такое: Дать право админу заходить в БД только по будням. Я создал триггер для этого, с таким кодом:
CREATE OR REPLACE TRIGGER vhod_tolko_po_budnjam AFTER LOGON ON DATABASE DECLARE
    current_day NUMBER;
    user_role   NUMBER;
BEGIN
    SELECT DISTINCT
        COUNT(*)
    INTO user_role
    FROM
        user_role_privs
    WHERE
        granted_role = 'admin_role'; --Проверяем роль
    SELECT
        to_char(sysdate, 'D')
    INTO current_day
    FROM
        dual; --получаем день недели
    IF
        ( current_day > 5 )
        AND ( user_role >= 1 )
    THEN --если вошел после пятницы и роль админ
        raise_application_error(-20000, 'Приходите в будни!'); 
    END IF;

END;

создал этот триггер я под пользователем Sergey (ну под которым я все лабы выполняю), и для других пользователей он не срабатывает, а как сделать так чтобы триггер срабатывал для определенной роли я не знаю, а назначить как процедуру его насколько я знаю нельзя....
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы