Скажем, вы хотите добавить ограничение тем же способом для пользователя, который подключается к базе данных для этого изменения, вы бы сделали аналогичный триггер и добавили к нему условие:
create or replace trigger TRG_Restrict
before create on database
DECLARE
v_osuser varchar(500);
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
v_osuser := sys_context('userenv', 'os_user') ;
-- condition on OS user
if (lower(v_osuser) not in ( 'alex','hales')) then
-- condition on user connected to Oracle
if (ora_login_user not in ('SYS', 'OKTOMODIFY_USER1', 'OKTOMODIFY_USER2') ) then
INSERT into TEMP_AUDIT_users
(ddl_date, user_name, ddl_type, object_type,
object_name, owner, osuser, host, terminal,
IP_address)
VALUES
(sysdate, ora_login_user, ora_sysevent, ora_dict_obj_type,
ora_dict_obj_name, ora_dict_obj_owner, v_osuser, sys_context('USERENV', 'HOST'), sys_context('USERENV', 'TERMINAL'),
SYS_CONTEXT('USERENV','IP_ADDRESS'));
commit;
begin
RAISE_APPLICATION_ERROR (-20000,'Stop You Are Not Authorized To Make Any Change. Thank You :( ');
end;
end if;
end if;
END;
(здесь предполагается, что ОК, чтобы делать модификации, подключенные только к Oracle как 'SYS
', 'OKTOMODIFY_USER1
' и 'OKTOMODIFY_USER2
', от пользователей ОС Alex
и Hales
).