0%

Oracle PK조회방법, primary key 조회쿼리, PK 컬럼 조회

oracle

오라클 PK 조회방법

1
2
3
4
5
6
7
8
9
10
11
12
SELECT A.TABLE_NAME
, A.CONSTRAINT_NAME
, B.COLUMN_NAME
, B.POSITION
FROM ALL_CONSTRAINTS A
, ALL_CONS_COLUMNS B
WHERE 1=1
AND A.CONSTRAINT_TYPE = 'P'
AND A.OWNER = B.OWNER
AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
-- AND A.TABLE_NAME = 'JOB_HISTORY' -- 특정테이블
ORDER BY B.POSITION

결과예시

TABLE_NAMECONSTRAINT_NAMECOLUMN_NAMEPOSITION
AQ$_ALERT_QT_HSYS_IOT_TOP_19840MSGID1
AQ$_ALERT_QT_GSYS_IOT_TOP_19843MSGID1
AQ$_ALERT_QT_ISYS_IOT_TOP_19846SUBSCRIBER#1
  • TABLE_NAME : PK가 걸려있는 테이블
  • CONSTRAINT_NAME : PK이름
  • COLUMN_NAME : PK를 건 컬럼
  • POSITION : PK 순서

constraint_type

AND A.CONSTRAINT_TYPE = ‘P’ 와 같이, constraint_type을 명시한 조건절이 있는데,
P 대신 다른 값을 사용하면 다른 constraint도 확인할 수 있다.
이에 대한 설명은 아래와 같다.

CONSTRAINT_TYPE설명대상
CCheck on a table, Check, Not NULLColumn
ORead Only on a viewObject
PPrimary KeyObject
RReferential AKA Foreign KeyColumn
UUnique KeyColumn
VCheck Option on a viewObject

ALL_CONSTRAINTS, ALL_CONS_COLUMNS

사용자에 따라서 사용할 수 있는 뷰가 달라 질 수 있는 부분이 있습니다.
앞선 쿼리로 조회되지 않는다면 뷰를 바꿔서 조회하면 됩니다.
( FROM ALL_CONSTRAINTS A
, ALL_CONS_COLUMNS B 부분)

  • ALL_CONSTRAINTS : 현재 사용자가 엑세스할 수 있는 테이블에 대한 제약 조건 정의
  • USER_CONSTRAINTS : 현재 사용자의 스키마에 있는 테이블에 대한 제약 조건 정의
  • DBA_CONSTRAINTS : 데이터베이스의 모든 제약 조건 정의