簡體   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