오라클(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
사용자에 따라서 사용할 수 있는 뷰가 달라진다. 위에 쿼리가 조회되지 않는다면 뷰를 바꿔서 조회하면 된다.
(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 존재 여부만 확인하였지만, 이번 게시물에서는 해당 테이블의 PK존재 여부뿐만 아니라 PK 컬럼 정보까지 조회하는 방법입니다.
만약 조회하는 유저의 권한이 충분하지 않다면 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' 카테고리의 다른 글
2021.06.04 |
2020.08.26 |
2020.03.24 |
2020.02.20 |
2019.12.03 |