2008-11-12 6 views

Respuesta

20

creo un disparador de inicio de sesión debería funcionar:

CREATE OR REPLACE TRIGGER db_logon 
AFTER logon ON DATABASE WHEN (USER = 'A') 
BEGIN 
    execute immediate 'ALTER SESSION SET CURRENT_SCHEMA = B'; 
END; 
+0

sí, fue la única solución que había encontrado, pero no quiero crear una consulta muy largo (por ejemplo, cuando el usuario IN (lista muy, muy largo). Cualquier otra forma? –

+0

No se pudo crear una tabla de mapeo que mapea al usuario A al esquema B y luego consulta esa tabla en el desencadenador? Así que elimine WHEN (USER = 'A'), busque al usuario en esta tabla de mapeo, y luego decida si necesita cambiar el actual esquema –

+0

Actualmente estoy usando la parte POSTERIOR al inicio de sesión en DB WHEN (1 = 1), y funciona, gracias por la ayuda de Tony. –

11

Por alguna razón desencadenante de Tony no funcionó para mí. Sin embargo, un disparador ligeramente diferente que encontré en la web usando el mismo concepto sí lo hizo.

create or replace trigger set_default_schema 
after logon on my_user.schema 
begin 
    execute immediate 'alter session set current_schema=NEW_SCHEMA'; 
end; 

Solo quería tirarlo allí en caso de que alguien más tenga el mismo problema.

+0

Lo compilé solo después de eliminar el punto y coma detrás de y el final. .. pero aún no funciona, el esquema predeterminado no cambia al iniciar sesión! ¡Creo que me faltan algunos privilegios en la base de datos! – lexu

1
create or replace trigger AFTER_LOGON_TSFREL 
AFTER LOGON ON "TSFRELEASEAPP".SCHEMA 
BEGIN 
    EXECUTE IMMEDIATE 'ALTER SESSION SET current_schema=TSF_RELEASE'; 
END; 
+0

Tengo un usuario llamado "melanke" y un esquema llamado "melanke". ¿Qué tengo que hacer si quiero consultar 'select * from tb_melanke' sin tener que consultar' select * from melanke.tb_melanke'? Este disparador no funciona. – melanke

+0

Los desencadenadores deberían funcionar, realizar algunas depuraciones, al intentar ejecutar ALTER SESSION usted mismo después del inicio de sesión, si eso funciona, asegúrese de que su Trigger esté configurado y compilado con los privilegios correctos ... Otra opción sería (público) SINÓNIMOS – Falco

Cuestiones relacionadas