我们有两个Oracle数据库实例:ORIG和REPL,它们之间具有数据库链接。
ORIG中有一些表,每个表都有一个物化视图日志(MVL)。 MVL用于刷新REPL中的实例化视图(MV)。
REPL中的其他用户具有从MV中选择的特权。 REPL中的某些MV在插入触发器后包含。
如果我们需要更改ORIG中的表(例如添加新列),则可以执行以下步骤(以确保REPL中的MV与ORIG中的表具有相同的结构):
最后一个动作(授予特权)的原因是,由于删除了MV并重新创建了MV,因此所有相关对象(授予,触发器,...)都将丢失。
我的问题: 由于某些MV包含触发器,因此我需要修改该过程,以便它也可以重新创建这些触发器。 触发代码有所不同(逐表)。我知道我可以对
之类的东西进行硬编码if table_name = 'tableA' then
create triggerA
...
但是我相信有更好的解决方案。
有什么提示吗?