我的数据库中有2个架构。其中一个模式有一个使用另一个模式表的包。来自另一个模式的表,经常在一段时间后删除并使用相同的名称创建。
因此,当表同时丢失时,来自另一个模式的包将因表而无效。
是否有任何方法可以提供授权访问权限,因为它会在表删除后保留,或者自动重新编译该程序包。请帮帮我。
先谢谢。
答案 0 :(得分:1)
不幸的是,没有任何自动任务可以做到这一点。你应该编写代码来自动执行此操作。请检查http://psoug.org/reference/ddl_trigger.html。它会帮助你。
答案 1 :(得分:0)
如果其中一个依赖对象被删除,则包将始终无效。在表不存在的情况下重新编译包不起作用,包仍然无效。
考虑删除表中的所有行(或截断它),而不是删除并重新创建它。
否则,尝试最小化删除和重新创建表之间的时间。确保在表格的同时创建所有相关的授权和同义词。
我能想到的唯一解决方法是在删除表之前创建表的副本。如果您使用同义词来引用包中的表,则可以在删除实际的表时“欺骗”包使用该表的副本。更改同义词时,程序包仍会无效,但这只会持续很短的时间。
解决此问题的唯一理想解决方案是停止删除表格。