我在两个不同的 Oracle 11g 服务器上的 SYS 模式中以相同的方式创建了以下触发器,没有出现任何错误。
CREATE OR REPLACE TRIGGER LOGON_TRG
AFTER LOGON ON DATABASE
BEGIN
if (user in ('mytestro', 'mytestrw')) then
EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA = mytest';
end if;
exception
when others
then null; -- prevent a login failure due to an exception
END logon_trg;
/
在一台服务器上,我可以告诉它正在工作,因为我可以在使用任一帐户登录后立即选择 mytest 中的任何表。在另一台服务器上,它说该表不存在 (ORA-00942)。如果我手动发出ALTER SESSION SET CURRENT_SCHEMA = mytest;
,我可以访问该表,所以触发器似乎没有触发。