Oracle 12c中如何查询IDENTITY列生成类型及相关元数据表?
嘿,刚好对Oracle 12c的IDENTITY列这块挺熟悉的,给你一步步讲清楚:
Oracle 12c中IDENTITY列的生成类型判断与元数据查询指南
一、快速判断IDENTITY列的生成类型
要区分IDENTITY列是ALWAYS GENERATED还是DEFAULT,直接查标准数据字典视图就行。推荐用USER_TAB_COLUMNS(查询当前用户的表),或者ALL_TAB_COLUMNS(查询有权限访问的所有表)、DBA_TAB_COLUMNS(需要DBA权限)。
执行下面的SQL就能筛选出所有IDENTITY列并查看生成类型:
SELECT table_name, column_name, generation_type -- 这里的值就是'ALWAYS'或'DEFAULT' FROM user_tab_columns WHERE identity_column = 'YES';
这里的generation_type字段直接对应你要的类型:ALWAYS就是"ALWAYS GENERATED",DEFAULT就是你说的"DEFAULT"类型。
二、Oracle有没有IDENTITY列专属元数据表?
Oracle并没有为IDENTITY列单独创建一张专属的元数据表,但提供了专门的视图来快速筛选IDENTITY列——USER_IDENTITY_COLS(同样有ALL_IDENTITY_COLS和DBA_IDENTITY_COLS对应不同权限范围)。这个视图只返回IDENTITY列的信息,不用再手动过滤,用起来更方便。
三、存储IDENTITY列详细信息的元数据视图
如果要找IDENTITY列的完整详细信息,USER_IDENTITY_COLS是最优选择,它包含了生成类型之外的所有关键参数,比如起始值、增量、最大/最小值、是否循环等。示例查询:
SELECT table_name, column_name, generation_type, identity_start, identity_increment, identity_max_value, identity_min_value, identity_cycle FROM user_identity_cols;
另外,USER_TAB_COLUMNS里也包含部分IDENTITY列的基础信息,但USER_IDENTITY_COLS是专门为IDENTITY列设计的,信息更集中、更全面。
内容的提问来源于stack exchange,提问作者Kumar Vaibhav
相关产品推荐
相关产品推荐

