Oracle 所有约束和所有约束列中的所有者是否与表所有者相同?

Oracle 所有约束和所有约束列中的所有者是否与表所有者相同?,oracle,constraints,data-dictionary,Oracle,Constraints,Data Dictionary,根据Oracle的说法,(ALL | USER | DBA)_约束中的所有者字段是约束的所有者。若要重新关联此约束所属的表,此视图提供了table\u NAME,但要唯一标识表,我需要表的所有者和表名。由于*\u约束和*\u所有约束列视图没有表所有者字段,这是否意味着约束所有者与表所有者相同?或者换句话说,约束只能由表的所有者添加吗 这是否意味着约束所有者与表所有者相同 对 约束只能由表的所有者添加吗 不可以,它可以由另一个拥有alteranytable权限的用户添加。其中之一就是SYS。下面

根据Oracle的说法,
(ALL | USER | DBA)_约束
中的
所有者
字段是约束的所有者。若要重新关联此约束所属的表,此视图提供了
table\u NAME
,但要唯一标识表,我需要表的所有者和表名。由于
*\u约束
*\u所有约束列
视图没有
表所有者
字段,这是否意味着约束所有者与表所有者相同?或者换句话说,约束只能由表的所有者添加吗

这是否意味着约束所有者与表所有者相同


约束只能由表的所有者添加吗

不可以,它可以由另一个拥有
alteranytable
权限的用户添加。其中之一就是
SYS
。下面是一个例子:

作为Scott连接,我正在创建一个表:

SQL> connect scott/tiger
Connected.
SQL> create table test (id number);

Table created.
连接为SYS和alter Scott的表-添加主键约束:

SQL> connect sys as sysdba

Enter password:
Connected.
SQL> alter table scott.test add constraint pk_test primary key (id);

Table altered.
回到Scott,检查谁拥有什么:

SQL> select constraint_name, owner from all_constraints where table_name = 'TEST';

CONSTRAINT_NAME                OWNER
------------------------------ ------------------------------
PK_TEST                        SCOTT

SQL> select table_name, owner From all_tables where table_name = 'TEST';

TABLE_NAME                     OWNER
------------------------------ ------------------------------
TEST                           SCOTT

SQL>
正如你所见,斯科特拥有一切