2016-06-28 48 views
0

到目前爲止,我知道將模式導入另一個數據庫的最快捷方式是通過Toad for Oracle的「導入/導出實用程序」。Toad /導入實用程序/將用戶導入用戶仍然引用觸發器中舊用戶的模式

但是,每次我們從架構A導入到架構B(選擇導入用戶)時,觸發器仍會引用舊架構。

例如,導入過程中嘗試運行這段代碼:

CREATE OR REPLACE TRIGGER B.CONTACT_DETAILS_bir 
BEFORE INSERT ON A.CONTACT_DETAILS FOR EACH ROW 
BEGIN 
    SELECT A.CONTACT_DETAILS_seq.NEXTVAL 
    INTO :new.id 
    FROM dual; 
END; 
/

不用說,腳本失敗,因爲A.CONTACT_DETAILS不會在目標數據庫中存在。

有沒有辦法避免這種不匹配?

回答

1

我已經問了開發者負責這個區域的蟾蜍,這裏是他的迴應;他不在StackOverflow上。

導入實用程序實際上是一個Oracle產品。蟾蜍只是給你一個圖形用戶界面來創建命令來運行它。 IMP 沒有參數,我知道哪些將解析您的觸發器並更改它們,以便它們 指向新模式。我不知道,但我不認爲Oracle會認爲它是一個錯誤。一種可以防止 問題的方法是在觸發器代碼中根本不指定模式名稱。在這種情況下,觸發器將假定該表處於相同的模式。

+0

我想也是這樣......從未嘗試過在觸發代碼中沒有指定模式名稱,但這是有道理的。我會盡力讓你知道結果 –