2014-01-29 37 views
1

我試圖創建或替換插入更新到遠程表後執行的觸發器。我知道你不能在數據庫鏈接上執行DDL,但我想知道是否有任何解決方法。也許動態SQL,使DDL被解釋爲一個字符串?或者創建DBlink的同義詞並調用同義詞而不是表名。創建在遠程數據庫插入更新後執行的觸發器

任何幫助,將不勝感激。

Create or replace TRIGGER_NAME 
after update or insert on [email protected]_link 
for each row... 
+0

什麼是「插入***更新」? –

回答

4

如果您希望觸發器在遠程表更新時觸發,則需要在遠程數據庫上創建該觸發器。如果您實際上有權在遠程數據庫上創建觸發器,我不確定爲什麼您不只是登錄到遠程服務器並執行DDL。您可以使用DBMS_UTILITY.EXEC_DDL_STATEMENT過程在遠程服務器上運行DDL(假設你有特權)

[email protected]_server( 
    'create or replace trigger trigger_name ' || 
    ' after update or insert on table_name ' || 
    ' for each row ' || 
    ... 
); 

我很難想象,爲什麼你要做到這一點,而不僅僅是連接到遠程服務器直接...