2008-11-12 64 views

回答

20

我相信一個登錄觸發器應該工作:

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

是的,這是我所發現的唯一的解決辦法,但我不希望創建一個很長的查詢(例如,當用戶(真的很長的列表)。任何另一種方式? – 2008-11-12 12:45:48

+0

你能不能創建一個映射表,將用戶A映射到模式B,然後在觸發器中查詢該表?因此,消除WHEN(USER ='A'),在此映射表中查找用戶,然後決定是否需要更改當前模式 – 2008-11-12 14:35:42

+0

其實我現在正在使用後註冊數據庫當(1 = 1)的一部分,它的工作,感謝您的幫助託尼 – 2008-11-14 21:02:23

11

出於某種原因,託尼的觸發並沒有爲我工作。然而,我使用相同的概念在網上找到了略微不同的觸發器。

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

我只是想把它扔在那裏,以防其他人有同樣的問題。

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