Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle列ID隐式索引创建_Oracle_Indexing_Unique Constraint_Composite Primary Key - Fatal编程技术网

Oracle列ID隐式索引创建

Oracle列ID隐式索引创建,oracle,indexing,unique-constraint,composite-primary-key,Oracle,Indexing,Unique Constraint,Composite Primary Key,Oracle如何使用用户选项卡列视图中的列ID?我只需要确认它在创建隐式索引时不使用这种内部列顺序,例如强制执行主键或创建唯一键约束时(即提供的键/约束列按相同顺序使用-从左到右,而不是这些内部列顺序)。(如果可能,请为我指出Oracle文档的方向。)。提前谢谢 很难找到说明它没有做什么的东西,但是没有任何东西说明它将使用column\u id覆盖索引创建 您可以在文档中看到对列\u id的所有引用;唯一似乎有问题的是 您可以通过查询来验证索引中使用的列的顺序,您将能够看到其列\u位置(来自索引

Oracle如何使用用户选项卡列视图中的列ID?我只需要确认它在创建隐式索引时不使用这种内部列顺序,例如强制执行主键或创建唯一键约束时(即提供的键/约束列按相同顺序使用-从左到右,而不是这些内部列顺序)。(如果可能,请为我指出Oracle文档的方向。)。提前谢谢

很难找到说明它没有做什么的东西,但是没有任何东西说明它将使用
column\u id
覆盖索引创建

您可以在文档中看到对
列\u id
的所有引用;唯一似乎有问题的是

您可以通过查询来验证索引中使用的列的顺序,您将能够看到其
列\u位置
(来自索引创建命令中列的顺序)与
列\u 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;

。。。根据需要为所有者或表添加筛选器。

:无论何时创建复合主键,都会创建一个列名为“
主键(相册、磁盘、posn)”的脚本。
,因此顺序决定相册为1,磁盘为2,posn为3,不是oracle本身。与UNIQUE key constraint的情况相同。注意:感谢Gaurav的回复-这是我“期望”oracle也能做的-想知道是否有一个规范或一个简单的方法来计算为约束生成的索引键。感谢Alex-链接很有用-我现在可以验证列id在“隐式”索引创建的例子。只是做了一个快速检查,它确认了在隐式索引创建期间,Oracle确实使用传递给键创建的列的顺序作为备份此类约束的索引。创建表test_table(col1 varchar(10)、col2 varchar(10)、col3 varchar(10)、col4 varchar(10))
alter table test\u table add constraint PK\u test\u table主键(col3,col1);从用户索引列中选择*,其中table_name='TEST_table';结果:pKyTestPoT表Test*表COL3 1 10,10 ASC PKKTestIt表TestIt表COL1 2 10 10 ASCthanks Alex不能在文章的中间格式化注释。