如何在MV上重新创建触发器

时间:2018-09-06 13:16:55

标签: oracle plsql triggers materialized-views

我们有两个Oracle数据库实例:ORIG和REPL,它们之间具有数据库链接。

ORIG中有一些表,每个表都有一个物化视图日志(MVL)。 MVL用于刷新REPL中的实例化视图(MV)。

REPL中的其他用户具有从MV中选择的特权。 REPL中的某些MV在插入触发器后包含。

如果我们需要更改ORIG中的表(例如添加新列),则可以执行以下步骤(以确保REPL中的MV与ORIG中的表具有相同的结构):

  • ORIG中的变更表
  • 在ORIG中更改MVL
  • 在REPL中拖放并重新创建MV (以使其具有与ORIG中的表相同的结构)
  • 授予REPL中的MV特权

最后一个动作(授予特权)的原因是,由于删除了MV并重新创建了MV,因此所有相关对象(授予,触发器,...)都将丢失。

我的问题: 由于某些MV包含触发器,因此我需要修改该过程,以便它也可以重新创建这些触发器。 触发代码有所不同(逐表)。我知道我可以对

之类的东西进行硬编码
if table_name = 'tableA' then

create triggerA
...

但是我相信有更好的解决方案。

有什么提示吗?

0 个答案:

没有答案