【发布时间】:2017-07-19 23:47:29
【问题描述】:
我正在使用下面的 alter 语句测试名为“tulockout”的触发器...“alter user testuser account lock;”查看触发器日志是否记录了表“log_table_changes”中发生的事情。 但是,某些值没有准确地记录到表“log_table_changes”中。具体来说,v_dusr.start_dt 在触发时返回 NULL,在我执行“alter user testuser account lock;”后会触发“tulockout”。声明。
我不确定为什么。你能帮忙吗? 我该如何解决这个问题?谢谢。
create or replace trigger tulockout
after alter on schema
declare
cursor v_abc is
select du.username, max(us.start_dt)
from dba_users du, user_session us, users_info ui
where ui.db_user_name = du.username
and ui.db_user_name = us.user_name
and ui.db_user_name = ora_login_user;
v_dusr v_abc%ROWTYPE;
begin
if(ora_sysevent = 'ALTER' and v_dusr.username = ora_dict_obj_name and
v_dusr.account_status = 'LOCKED') then
insert into log_table_changes(username,
lastlogin_date,
notes,
execute_date,
script_name
)
values(
v_dusr.username,
v_dusr.start_dt,
ora_dict_obj_type||', '||
ora_dict_obj_name||' has been locked out.',
sysdate,
ora_sysevent
);
end;
【问题讨论】: