在 Oracle 中查询以获取具有主键信息的 table 中的列
Query in Oracle to get columns in a table with primary key info
获取 table 描述的查询是什么,其中的列部分的主键已标记?例如,它会 return 像这样:
Table Column is_part_of_pk
----- ------ -------------
ADDRESS ID 1
ADDRESS ADDR_LINE_1 0
ADDRESS ADDR_CITY 0
STUDENT FIRST_NAME 1
STUDENT LAST_NAME 1
STUDENT CLASS_NAME 0
All 列出了 table 中的列,并且是或属于主键的列是 'tagged'。我曾尝试 select 反对 user_tab_columns、all_cons_columns 和 all_constraints,但我得到了重复的列。谢谢
试试这个
select col.table_name , col.column_name,
case when exists(select 'x' from USER_CONSTRAINTS l
join USER_CONS_COLUMNS ll on LL.CONSTRAINT_NAME = L.CONSTRAINT_NAME
where l.table_name = col.table_name and l.constraint_type = 'P' and ll.column_name = col.column_name) then 1 else 0 end is_part_of_pk
from USER_TAB_COLUMNS col where table_name = :some_table_name
order by column_id;
获取 table 描述的查询是什么,其中的列部分的主键已标记?例如,它会 return 像这样:
Table Column is_part_of_pk
----- ------ -------------
ADDRESS ID 1
ADDRESS ADDR_LINE_1 0
ADDRESS ADDR_CITY 0
STUDENT FIRST_NAME 1
STUDENT LAST_NAME 1
STUDENT CLASS_NAME 0
All 列出了 table 中的列,并且是或属于主键的列是 'tagged'。我曾尝试 select 反对 user_tab_columns、all_cons_columns 和 all_constraints,但我得到了重复的列。谢谢
试试这个
select col.table_name , col.column_name,
case when exists(select 'x' from USER_CONSTRAINTS l
join USER_CONS_COLUMNS ll on LL.CONSTRAINT_NAME = L.CONSTRAINT_NAME
where l.table_name = col.table_name and l.constraint_type = 'P' and ll.column_name = col.column_name) then 1 else 0 end is_part_of_pk
from USER_TAB_COLUMNS col where table_name = :some_table_name
order by column_id;