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