创建在远程数据库上插入更新后执行的触发器

时间:2014-01-29 22:29:54

标签: sql oracle

我正在尝试创建或替换在向远程表插入更新后执行的触发器。我知道你不能通过数据库链接做DDl,但我想知道是否有任何解决方法。也许动态sql使DDL被解释为一个字符串?或者使用DBlink创建同义词并调用同义词而不是表名。

任何帮助都将不胜感激。

Create or replace TRIGGER_NAME 
after update or insert on REMOTE_TABLE@DB_link
for each row...

1 个答案:

答案 0 :(得分:4)

如果要在更新远程表时触发触发器,则需要在远程数据库上创建该触发器。如果您实际上有权在远程数据库上创建触发器,我不确定为什么您不会只登录到远程服务器并执行DDL。您可以使用DBMS_UTILITY.EXEC_DDL_STATEMENT过程在远程服务器上运行DDL(假设您具有权限)

DBMS_UTILITY.EXEC_DDL_STATEMENT@remote_server( 
  'create or replace trigger trigger_name ' ||
  ' after update or insert on table_name ' ||
  ' for each row ' ||
  ...
);

我很难想象你为什么要这样做,而不是直接连接到远程服务器......