【问题标题】:Oracle : Create table in another schema and grant select and insert on it from the same schemaOracle:在另一个模式中创建表并从同一模式中授予选择和插入权限
【发布时间】:2012-02-06 05:06:31
【问题描述】:

我有两个架构。

1.SchemaA

2.Schema B

我需要做以下事情。

  1. 我想在 B 架构中创建一些表(与 A 中的一些表相同)
  2. 然后将数据从 A 移动到 B

现在我想从架构 A 中完成所有这些操作。我编写了一个包,当在 A 中执行时,它将在 B 中创建所有表,然后创建同义词A 中的它们。然后只会从自己的表中选择数据并插入到 B 的 表中。

非常重要:现在这整件事必须一次性完成。只需执行一个开始块即可完成整个工作。

问题: 但是现在同义词不起作用,因为 Schema A 在它在 B 中创建的表。

那么有没有一种方法可以创建表(从 A 到 B),并在创建时提供所有权限? 或者可以在执行时在 PL-SQL 中切换模式,以便可以将 privs 从 B 授予 A ? (我敢肯定这是做不到的,但他们说没有什么是不可能的!:O :P 所以问)

请帮帮我!欢迎所有建议!

这项工作的主要目标是一次性完成,并且只使用一个模式。

【问题讨论】:

    标签: sql database oracle plsql logic


    【解决方案1】:

    您可以定义一个将在定义者权限而不是调用者权限下运行的过程

    CREATE OR REPLACE PROCEDURE definer_test AUTHID DEFINER IS 
    BEGIN
        ...
    END definer_test;
    

    您可以在模式 B 中定义这样一个过程,它会完成这项工作并从模式 A 中调用它。

    【讨论】:

    • 感谢奥利维尔!似乎这可以完成这项工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2020-02-26
    • 2020-04-26
    • 2012-10-18
    相关资源
    最近更新 更多