首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >约束权限,Oracle DB上的主/外键

约束权限,Oracle DB上的主/外键
EN

Stack Overflow用户
提问于 2018-12-08 00:44:41
回答 1查看 0关注 0票数 0

首先,我不是DataBaseAdministrator,但DBA对此没有帮助...

我在Oracle数据库上创建了一些表

我已经授予了这些权限,但我仍然有错误。

例如我有这个:

create table ABCD.ANNEE (
    ANNEE CHAR(20) not null,
    constraint PK_ANNEE primary key (ANNEE)
);

错误状态,我没有约束的权限。

但是,当我发布这个:

create table ANNEE (
    ANNEE CHAR(20) not null,
    constraint PK_ANNEE primary key (ANNEE)
);

没有用户/架构,我没有权限错误...

我告诉DBA推出了这笔补助金:

GRANT REFERENCES ANY TABLE TO USER

有具体要求吗?我知道我的用户有一个角色,并且无法将REFERENCES权限添加到角色,所以我需要将其分开。

我怎样才能有权在用户ABCD.ANNEE上创建约束,pk,fk?

EN

回答 1

Stack Overflow用户

发布于 2018-12-08 10:05:08

最简单的方法是作为ABCD用户连接并在那里做所有事情。作为所有者(您使用有效凭据连接,对吗?),您可以毫无问题地执行此类操作。

由于您似乎没有连接为ABCD,因此您需要获得以下权限:

CREATE ANY TABLE, CREATE ANY INDEX

为了做到这一点。这是一个例子:我的数据库中有两个用户,SCOTT和MIKE。连接为SCOTT,我想在MIKE的模式中创建一个表,该表应该具有主键约束。

SQL> show user
USER is "SCOTT"
SQL> create table mike.test(id number, constraint pkte primary key (id));
create table mike.test(id number, constraint pkte primary key (id))
*
ERROR at line 1:
ORA-01031: insufficient privileges

这不起作用(正如你已经注意到的那样),所以我将首先授予CREATE ANY TABLE并再试一次:

SQL> connect sys@xe as sysdba
Enter password:
Connected.

SQL> grant create any table to scott;

Grant succeeded.

SQL> connect scott/tiger@xe
Connected.

SQL> create table mike.test(id number, constraint pkte primary key (id));
create table mike.test(id number, constraint pkte primary key (id))
*
ERROR at line 1:
ORA-01031: insufficient privileges

让我们授予CREATE ANY INDEX,因为创建主键也会创建索引。

SQL> connect sys@xe as sysdba
Enter password:
Connected.

SQL> grant create any index to scott;

Grant succeeded.

SQL> connect scott/tiger@xe
Connected.

SQL> create table mike.test(id number, constraint pkte primary key (id));

Table created.

这样就成功啦

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档