【问题标题】:What uniquely identifies an index in Oracle?Oracle 中索引的唯一标识是什么?
【发布时间】:2019-12-08 21:03:26
【问题描述】:
在 Oracle 文档中,(DBA|ALL)_INDEXES 视图具有
OWNER索引的所有者
INDEX_NAME索引名称
TABLE_OWNER索引对象的所有者
TABLE_NAME索引对象的名称
我的问题是索引的唯一标识是什么?只是OWNER和INDEX_NAME,还是OWNER、INDEX_NAME、TABLE_OWNER和TABLE_NAME?
【问题讨论】:
标签:
sql
oracle
create-table
information-schema
data-dictionary
【解决方案1】:
一个索引由它的INDEX_NAME 和它的OWNER 唯一标识(即它所属的模式)。基本上,模式中的每个对象都必须有一个唯一的名称。两个不同的表不能有同名的索引,除非这些索引属于两个不同的模式。
考虑 this simple example:
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