繁体   English   中英

在另一个模式上创建表

[英]Create table on another schema

情况是user1给user2提供了权限:

GRANT CREATE ANY TABLE, SELECT ANY TABLE TO user2;

登录user2后,我正在尝试创建表:

CREATE TABLE user1.test(id NUMBER PRIMARY KEY);

结果是ORA-01031 - insufficient privileges我可以在自己的模式上创建表并从其他模式中选择表。 我认为CREATE ANY TABLE解决了这个问题,但它看起来是另一种方式。 啊,两个用户都有无限的表空间。 我还能保证什么?

也许您还需要授予CREATE ANY INDEX 您在添加主键时创建索引。 您可以通过省略PK约束来快速测试。

“创建任何表”对于授予非DBA来说是一种非常强大的特权。 更好的方法是在目标模式中创建一个“创建表”过程,该过程接受所需DDL的已清理组件,并为此向所需用户授予执行权限。

一个合适的界面就像......

create procedure
  create_table(
    table_name varchar2,
    columns    varchar2,
    etc        varchar2)

......这样你就可以......

begin
  user1.create_table(
    table_name => 'TEST',
    columns    => 'id NUMBER PRIMARY KEY',
    etc        => '');
end;

...并让程序构造并执行DDL。

用户GRANT为SCHEMA_NAME创建任何索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM