問題產生的操作步驟及詳細說明:
1)操作的數據庫是oracle 11g,先通過命令將用戶GAS_NEW的數據導出,命令語句如下:

expdp GAS_NEW/GAS_NEW@ORCL schemas=GAS_NEW dumpfile=gas20180123.dmp DIRECTORY=CS_DB
2)將導出的數據導入至另一新建用戶GAS下(含所有原GAS_NEW用戶下的對象),命令參考如下:
IMPDP GAS/GAS@ORCL DIRECTORY=CS_DB schemas=GAS_NEW dumpfile=gas20180123.dmp REMAP_SCHEMA=GAS_NEW:GAS
以上語句的說明:需要導入用戶是GAS,schemas設置為GAS_NEW的原因是:導出的用戶為GAS_NEW。
設置把原GAS_NEW用戶的對象插入到新用戶GAS下REMAP_SCHEMA=GAS_NEW:GAS
3)以上步驟能夠正常執行完畢,並且原用戶GAS_NEW下的對象都遷移到新用戶GAS下,但有一個觸發器問題。以下語句是遷入后某個觸發器的命令語句:
DROP TRIGGER TR_FM_FILE_ATTR; CREATE OR REPLACE TRIGGER TR_FM_FILE_ATTR BEFORE INSERT ON GAS_NEW.FM_FILE_ATTR FOR EACH ROW WHEN ( NEW.ID IS NULL OR NEW.ID = 0 ) BEGIN SELECT SQ_FM_FILE_ATTR.NEXTVAL INTO :NEW.ID FROM DUAL; END; /
可以看出:觸發器已成功在GAS用戶下建立,但是內容語句卻有問題,觸發器仍然是創建給原用戶GAS_NEW下的某個表上,需要改為當前用戶GAS的表上。
處理方式如下:
1、利用toad工具去查看生成的觸發器列表
2)全選所有觸發器,點右鍵'Create in another schema'
3)點擊‘OK’
4)在彈出的框體中選中 ‘Script’ 選項卡
5)‘全選’所有命令並復制出來,粘貼到記事本或其他編輯工具
6)替換GAS_NEW為GAS,然后將調整后的語句拿去用戶GAS下去執行並提交
7)以上步驟就完成了觸發器的修改