본문 바로가기
개발팁

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

by devscb 2025. 7. 12.
반응형

 

오라클 PK 조회방법

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_NAME CONSTRAINT_NAME COLUMN_NAME POSITION
AQ$_ALERT_QT_H SYS_IOT_TOP_19840 MSGID 1
AQ$_ALERT_QT_G SYS_IOT_TOP_19843 MSGID 1
AQ$_ALERT_QT_I SYS_IOT_TOP_19846 SUBSCRIBER# 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 설명 대상
C Check on a table, Check, Not NULL Column
O Read Only on a view Object
P Primary Key Object
R Referential AKA Foreign Key Column
U Unique Key Column
V Check Option on a view Object

ALL_CONSTRAINTS, ALL_CONS_COLUMNS

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

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

댓글