오라클 PK 컬럼 조회 - olakeul PK keolleom johoe

오라클(Oracle) PK 조회 쿼리

제약조건(Constraints) 뷰를 사용하여 PK 컬럼을 쉽게 조회할 수 있다. 테이블명을 대문자로 TABLE_NAME 조건에 넣으면 PK명과 PK컬럼이 조된다. 해당 테이블에 액세스 권한이 있어야 한다.

SELECT A.TABLE_NAME , A.CONSTRAINT_NAME , B.COLUMN_NAME , B.POSITION FROM ALL_CONSTRAINTS A , ALL_CONS_COLUMNS B WHERE A.TABLE_NAME = 'JOB_HISTORY' AND A.CONSTRAINT_TYPE = 'P'

AND A.OWNER = B.OWNER AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME ORDER BY B.POSITION

오라클 PK 컬럼 조회 - olakeul PK keolleom johoe

사용자에 따라서 사용할 수 있는 뷰가 달라진다. 위에 쿼리가 조회되지 않는다면 뷰를 바꿔서 조회하면 된다.

(XXX_CONSTRAINTS, XXX_CONS_COLUMNS)

 ALL_CONSTRAINTS

 현재 사용자가 엑세스할 수 있는 테이블에 대한 제약 조건 정의

 USER_CONSTRAINTS

 현재 사용자의 스키마에 있는 테이블에 대한 제약 조건 정의

 DBA_CONSTRAINTS

 데이터베이스의 모든 제약 조건 정의

SELECT A.TABLE_NAME , A.CONSTRAINT_NAME , B.COLUMN_NAME , B.POSITION FROM USER_CONSTRAINTS A , USER_CONS_COLUMNS B WHERE A.TABLE_NAME = 'JOB_HISTORY' AND A.CONSTRAINT_TYPE = 'P'

AND A.OWNER = B.OWNER AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME ORDER BY B.POSITION ;

SELECT A.TABLE_NAME , A.CONSTRAINT_NAME , B.COLUMN_NAME , B.POSITION FROM DBA_CONSTRAINTS A , DBA_CONS_COLUMNS B WHERE A.TABLE_NAME = 'JOB_HISTORY' AND A.CONSTRAINT_TYPE = 'P'

AND A.OWNER = B.OWNER AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME ORDER BY B.POSITION

Oracle

[Oracle] 해당 테이블 PK 컬럼 조회방법

코생아 2022. 3. 22. 13:50

오라클 PK 컬럼 조회 - olakeul PK keolleom johoe

위 게시물에서는 해당 테이블의 PK 존재 여부만 확인하였지만, 이번 게시물에서는 해당 테이블의 PK존재 여부뿐만 아니라 PK 컬럼 정보까지 조회하는 방법입니다.

SELECT A.TABLE_NAME, A.CONSTRAINT_NAME, B.COLUMN_NAME 
FROM DBA_CONSTRAINTS A, all_cons_columns B
WHERE A.CONSTRAINT_TYPE='P' and 
A.TABLE_NAME='테이블이름' AND
A.OWNER = B.OWNER AND 
A.CONSTRAINT_NAME = B.CONSTRAINT_NAME;

만약 조회하는 유저의 권한이 충분하지 않다면 DBA_CONSTRAINTS --> ALL_CONSTRAINTS 테이블로 변경하여 조회하시면 정상적으로 조회가 가능합니다.

SELECT A.TABLE_NAME
     , A.CONSTRAINT_NAME
     , B.COLUMN_NAME     
     , B.POSITION
  FROM ALL_CONSTRAINTS  A
     , ALL_CONS_COLUMNS B
 WHERE A.TABLE_NAME      = 'A'
   AND A.CONSTRAINT_TYPE = 'P' 
   AND A.OWNER           = B.OWNER
   AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
 ORDER BY B.POSITION

반응형

--제약조건을 조회하는 쿼리

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, A.*

FROM ALL_CONSTRAINTS A

WHERE TABLE_NAME = '테이블명'

--컬럼별 제약조건을 조회하는 쿼리

SELECT *

FROM ALL_CONS_COLUMNS

WHERE CONSTRAINT_NAME = '제약조건명'

--위 두 쿼리를 조합하여 사용

--컬럼별 제약조건을 조회하는데 제약조건 타입이 PK인 제약조건명으로 조회

SELECT *

FROM ALL_CONS_COLUMNS

WHERE CONSTRAINT_NAME = ( SELECT CONSTRAINT_NAME

                                           FROM ALL_CONSTRAINTS

                                           WHERE TABLE_NAME = '테이블명'

                                           AND CONSTRAINT_TYPE = 'P' )

반응형

'ORACLE' 카테고리의 다른 글

[ORACLE] 오라클 기본키 조회 하기  (0) 2021.06.04
[ORACLE] oracle decode 와 case when  (0) 2020.08.26
[ORACLE] MERGE INTO 로 UPDATE INSERT 하기  (0) 2020.03.24
[ORACLE] oracle insert 여러개하기  (0) 2020.02.20
[ORACLE] 정규표현식 REGEXP_LIKE  (0) 2019.12.03