【发布时间】:2012-02-08 04:20:40
【问题描述】:
我们有一个应用程序可以使用随机生成的名称创建一个表。我想在这个表上创建一个触发器。因为我不知道表的名称,所以我想从 all_table 视图中获取它。我怎样才能实现这样的目标?
create or replace trigger t1
after insert or update on (select table_name from all_tables where owner = 'CustomAPP' and table_name like 'STAGE_%')
-- for each row
declare
-- local variables here
begin
end t1;
上面的 SQL 显然会报错,因为 create 触发器后面的 select 子句而不是表名。请指教
【问题讨论】:
-
哇,您的应用程序正在创建具有随机名称(非常糟糕)的表(错误),并且您希望此应用程序在其上创建触发器(哎呀)。你到底想完成什么,也许有更好的方法?
-
好吧,它不是我的应用程序,所以它的好坏不取决于我。我的客户使用该应用程序,他们不愿意摆脱它,我对此无能为力,我也无法控制该应用程序。由于应用程序创建随机表然后尝试从中删除内容,因此由于表上没有统计信息,因此进程运行非常缓慢。我正在创建一个触发器,该触发器在从表中删除记录之前在填充表后运行分析。我是手动完成的,这是一个巨大的改进。我不确定更好的方法可能是什么