如何自动为特定用户角色提供授权以便频繁删除和创建表

时间:2016-09-25 09:06:51

标签: sql oracle

我的数据库中有2个架构。其中一个模式有一个使用另一个模式表的包。来自另一个模式的表,经常在一段时间后删除并使用相同的名称创建。

因此,当表同时丢失时,来自另一个模式的包将因表而无效。

是否有任何方法可以提供授权访问权限,因为它会在表删除后保留,或者自动重新编译该程序包。请帮帮我。

先谢谢。

2 个答案:

答案 0 :(得分:1)

不幸的是,没有任何自动任务可以做到这一点。你应该编写代码来自动执行此操作。请检查http://psoug.org/reference/ddl_trigger.html。它会帮助你。

答案 1 :(得分:0)

如果其中一个依赖对象被删除,则包将始终无效。在表不存在的情况下重新编译包不起作用,包仍然无效。

考虑删除表中的所有行(或截断它),而不是删除并重新创建它。

否则,尝试最小化删除和重新创建表之间的时间。确保在表格的同时创建所有相关的授权和同义词。

我能想到的唯一解决方法是在删除表之前创建表的副本。如果您使用同义词来引用包中的表,则可以在删除实际的表时“欺骗”包使用该表的副本。更改同义词时,程序包仍会无效,但这只会持续很短的时间。

解决此问题的唯一理想解决方案是停止删除表格。