ALTER ON DATABASE后,在Oracle中提供旧密码值

时间:2013-02-06 05:00:17

标签: oracle triggers passwords alter

当'sys.users $'表更新时,我正在编写一个触发器来获取'password'值。

CREATE OR REPLACE 
TRIGGER Sys_User_Nm_Trg AFTER ALTER ON DATABASE
WHEN (ora_dict_obj_type = 'USER')
DECLARE

CURSOR get_pw IS
SELECT password
FROM sys.user$
WHERE name = ora_dict_obj_name;

user_pw_ VARCHAR2(100);

BEGIN

IF (ora_dict_obj_name != 'SYS' AND ora_dict_obj_name != 'SYSTEM') THEN
  IF (ora_des_encrypted_password IS NOT NULL) THEN

 OPEN get_pw;
 FETCH get_pw INTO user_pw_;
 CLOSE get_pw;


 END IF;
END IF;

END;
/

但是这个游标给出了旧的“密码”而不是改变的“密码”值。但如果我跑

SELECT password
FROM sys.user$
WHERE name = ora_dict_obj_name;

在单独的事务中,它会给出正确的更改值。我是否应该在触发器中更改以获取密码的更新值?

0 个答案:

没有答案