Oracle根据表名查询表的主键和唯一索引

查询表的主键列名称

SELECT
 tt.table_name,
 listagg (tt.column_name, ',') WITHIN GROUP (ORDER BY tt.table_name) as pk
FROM
 (
  SELECT
   uc.table_name,
   ucc.column_name
  FROM
   user_constraints uc,
   user_cons_columns ucc,
   user_indexes ui
  WHERE 
   uc.table_name = ucc.table_name
  AND uc.table_name = ui.table_name
  AND uc.table_name = 'OR36_OBJECT_DEL_ANNOT_ASK_B'
  AND uc.constraint_type = 'P'
  AND uc.constraint_name = ucc.constraint_name
  GROUP BY
   uc.table_name,
   ucc.column_name
 ) tt
GROUP BY
 tt.table_name ;

获取唯一索引( listagg 是组装guoup by 后的字符串)

SELECT
 t.index_name, listagg(t.column_name, ',') within group(order by t.index_name) as uniqueIndex
FROM
 user_ind_columns t,
 user_indexes i
WHERE
 t.index_name = i.index_name
AND i.uniqueness = 'UNIQUE'
AND t.table_name = 'OR14_ENACCTINF_D'
group by t.index_name ;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值