Oracle如何使用USER_TAB_COLUMNS视图中的COLUMN_ID?我只需要确认它在创建隐式索引时不使用此内部列排序 - 例如强制执行主键或创建唯一键约束时(即提供的键/约束列以相同的顺序使用 - 左正确而不是这些内部列排序)。 (如果可能的话,请指出我的Oracle文档方向。)。提前致谢。
答案 0 :(得分:1)
很难找到一些声明它没有做某事的事情,但没有任何说明它会使用column_id
来覆盖索引创建。
您可以在文档here中看到对column_id
的所有引用;唯一似乎重要的是the all_tab_columns
view。
您可以通过查询all_ind_columns
view来验证索引中使用的列的顺序,您可以在其中查看其column_position
之间没有强制关系 - 来自订单列在索引创建命令中列出 - 和column_id
。
如果您对检查备份约束的索引特别感兴趣,可以执行以下操作:
select ac.owner, ac.table_name, ac.constraint_name, ac.index_owner,
ac.index_name, aic.column_position, aic.column_name
from all_constraints ac
join all_ind_columns aic on aic.index_owner = coalesce(ac.index_owner, ac.owner)
and aic.index_name = ac.index_name
order by 1, 2, 3, 6;
...根据需要为所有者或表格添加过滤器。