什么唯一标识 Oracle 中的索引?
What uniquely identifies an index in Oracle?
在 Oracle 文档中,(DBA|ALL)_INDEXES 视图有
OWNER
索引的所有者
INDEX_NAME
索引名称
TABLE_OWNER
索引对象的所有者
TABLE_NAME
索引对象的名称
我的问题是索引的唯一标识是什么?是 OWNER
和 INDEX_NAME
,还是 OWNER
、INDEX_NAME
、TABLE_OWNER
和 TABLE_NAME
?
索引由其 INDEX_NAME
和 OWNER
(即它所属的架构)唯一标识。基本上,模式中的每个对象都必须有一个唯一的名称。两个不同的表不能有同名的索引,除非这些索引属于两个不同的模式。
create table mytable(id int, val int);
create index myindex on mytable(id);
-- ok
create table mytable2(id int);
create index myindex on mytable2(id);
-- ORA-00955: name is already used by an existing object
在 Oracle 文档中,(DBA|ALL)_INDEXES 视图有
OWNER
索引的所有者
INDEX_NAME
索引名称
TABLE_OWNER
索引对象的所有者
TABLE_NAME
索引对象的名称
我的问题是索引的唯一标识是什么?是 OWNER
和 INDEX_NAME
,还是 OWNER
、INDEX_NAME
、TABLE_OWNER
和 TABLE_NAME
?
索引由其 INDEX_NAME
和 OWNER
(即它所属的架构)唯一标识。基本上,模式中的每个对象都必须有一个唯一的名称。两个不同的表不能有同名的索引,除非这些索引属于两个不同的模式。
create table mytable(id int, val int);
create index myindex on mytable(id);
-- ok
create table mytable2(id int);
create index myindex on mytable2(id);
-- ORA-00955: name is already used by an existing object