[英]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.