Oracle触发器重建索引

时间:2013-06-24 11:13:41

标签: oracle triggers

如何在Oracle中创建触发器来重建索引?

create or replace  
 TRIGGER BI_NAME_SEARCH AFTER INSERT OR UPDATE ON PROFILE
FOR EACH ROW  
BEGIN  
   ALTER INDEX MYINDEX REBUILD;  
END;

这不起作用。

1 个答案:

答案 0 :(得分:4)

你永远不想这样做:

  • 您需要在系统表上放置一个您真正不想做的事情。
  • 然后,您需要在触发器中动态执行DDL,这是您真正不想做的事情。

如果您需要重建索引,这应该作为标准系统维护的一部分完成,而不是动态。如果您需要动态重建索引,那么您正在做一些使索引无法使用的事情。不要做任何事情。解决问题的根本原因而不是症状。

要实际回答您的问题(再次不要这样做),您需要使用动态DDL才能在PL / SQL中执行DDL。使用EXECUTE IMMEDIATE

execute immediate 'alter index myindex rebuild';