Oracle SQL可以';不要选择我的索引

Oracle SQL可以';不要选择我的索引,sql,oracle,indexing,Sql,Oracle,Indexing,我创建了如下索引: --CREATE INDEXES for Tables CREATE UNIQUE INDEX worker_name_index ON WORKER (worker_id); CREATE UNIQUE INDEX company_name_index ON COMPANY (company_name); CREATE UNIQUE INDEX project_name_index ON PROJECT (project_id); 但找不到索引的位置: SELECT *

我创建了如下索引:

--CREATE INDEXES for Tables
CREATE UNIQUE INDEX worker_name_index ON WORKER (worker_id);
CREATE UNIQUE INDEX company_name_index ON COMPANY (company_name);
CREATE UNIQUE INDEX project_name_index ON PROJECT (project_id);
但找不到索引的位置:

SELECT * FROM USER_INDEXES;
这里也没有:

SELECT * FROM ALL_INDEXES;
这里也没有:

SELECT * FROM DBA_INDEXES;
并且也不能删除这些索引,因为删除会抛出ORA-01418:指定的索引不存在错误

--REMOVE INDEXES
DROP INDEX project_name_index;
DROP INDEX company_name_index;
DROP INDEX project_name_index;
并且无法重新创建,因为创建出现ORA-01408:列表中的此类列已被索引错误

已编辑(使用select*all_ind_列,索引不在那里)


您创建索引时使用的oracle用户可能与用于删除或选择此索引的用户不同。

您的问题似乎有点误导,因为您永远无法成功创建这些命名索引。如您随后对
所有索引列的查询所示,例如:

select * from all_ind_columns
where table_name = 'WORKER' and column_name = 'WORKER_ID'
。。。系统生成的索引已存在于您尝试索引的列中。名称(例如,
SYS_C0011015
)表示它们是系统生成的支持索引,用于针对表定义的主键(或可能唯一)约束

注释在几个地方:

如果未指定约束名称,则Oracle将生成 表单SYS\u Cn约束的系统名称


因此,您不能创建命名索引;如果表上已经存在约束,那么您将始终拥有ORA-01408,如果您在创建索引之后尝试添加约束,那么
alter
将失败。因为它们确实不存在,所以它们没有列在
所有索引中并且不能被删除是很合理的,并且您不能重新创建它们,原因与您不能首先创建它们相同…

您的意思是,您在删除时会出错,在重新创建时会出错(已经存在)?您发布的DDL无效,因为其中有一个额外的“index”关键字。是的,完全正确。我的意思是,我不能用select来列出我的索引。。但不知何故,它是“活”在某个地方,因为它也不能用相同的名称重新创建它。。。我希望现在更清楚。不,现在还不清楚。你为什么不把所有的东西都给我们看看?包括您收到的错误消息(以及您正在运行的真实语句,正如DazzaL指出的,问题中的语句无效)。谢谢各位,您说得对,这是因为我在复制到此处时修改了查询,但我不会编辑以包含原始查询。那么哪个
创建
生成ORA-01408?不幸的是,我使用的是同一个oracle用户(sysdba)。谢谢这就是为什么我可以在company_name行上创建索引的原因,它不是主键。。。