728x90

1. USER_UPDATABLE_COLUMNS란?
USER_UPDATABLE_COLUMNS는 Oracle 데이터베이스에서 현재 사용자가 소유한 테이블 또는 뷰에 대해 **각 컬럼이 UPDATE, INSERT, DELETE 가능한지 여부**를 확인할 수 있는 데이터 딕셔너리 뷰입니다. 주로 **뷰(View)**를 대상으로 사용되며, 뷰 기반 애플리케이션 개발 시 수정 가능성 검토 또는 권한 진단</strong에 필수적인 정보입니다. 예를 들어 복잡한 조인이나 집계 함수가 포함된 뷰에서는 일부 컬럼만 수정 가능하고, 나머지는 읽기 전용이 될 수 있습니다. 이때 해당 컬럼이 업데이트 가능한지를 판단할 수 있는 것이 바로 이 뷰입니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| TABLE_NAME | 해당 컬럼이 속한 테이블 또는 뷰의 이름 |
| COLUMN_NAME | 컬럼 이름 |
| UPDATABLE | UPDATE 가능 여부 (YES/NO) |
| INSERTABLE | INSERT 가능 여부 (YES/NO) |
| DELETABLE | DELETE 가능 여부 (YES/NO) |
| READ_ONLY | 컬럼이 읽기 전용인지 여부 (YES/NO) |
3. 실전 활용 예제
3.1. 수정 가능한 컬럼만 필터링
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
USER_UPDATABLE_COLUMNS
WHERE
UPDATABLE = 'YES';
3.2. 특정 뷰의 모든 컬럼과 수정 가능 여부 확인
SELECT
COLUMN_NAME,
UPDATABLE,
INSERTABLE,
DELETABLE
FROM
USER_UPDATABLE_COLUMNS
WHERE
TABLE_NAME = 'EMPLOYEE_VIEW';
3.3. 읽기 전용(READ_ONLY = YES) 컬럼 목록 조회
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
USER_UPDATABLE_COLUMNS
WHERE
READ_ONLY = 'YES';
4. 관련 뷰 비교
| 뷰 이름 | 역할 | 사용 대상 | 특징 |
|---|---|---|---|
| USER_UPDATABLE_COLUMNS | 컬럼 단위 수정 가능 여부 확인 | 현재 사용자 소유 테이블/뷰 | 업데이트 제약 진단 가능 |
| ALL_UPDATABLE_COLUMNS | 접근 가능한 모든 객체의 수정 가능 여부 | 접근 가능한 타 사용자 객체 포함 | JOIN 또는 복잡한 뷰 분석에 적합 |
| DBA_UPDATABLE_COLUMNS | 데이터베이스 전체 수정 가능 컬럼 정보 | DBA 권한 필요 | 시스템 전체 분석 목적 |
5. USER_UPDATABLE_COLUMNS 활용 전략
- 뷰 기반 폼 개발: 컬럼의 수정 가능 여부에 따라 UI 입력 필드 제어
- 권한 점검: 실제로 INSERT/UPDATE 권한이 있는지 여부와의 불일치 탐지
- 트리거 설계 참고: 수정 불가 컬럼에 트리거 작성 방지
- 프로시저 방어 로직 설계: 읽기 전용 컬럼에 값이 들어오는 경우 오류 반환
6. 주의사항
- 뷰의 구조 제약: 조인, 집계, 그룹핑, 서브쿼리 포함 시 대부분 컬럼은 읽기 전용이 됨
- INSTEAD OF 트리거 여부: INSTEAD OF 트리거를 정의하면 읽기 전용 컬럼도 수정 가능하게 보일 수 있음
- 실제 권한과는 별개: 이 뷰는 오브젝트 구조 기준이며, 사용자 권한 자체는 반영하지 않음 (권한은
USER_TAB_PRIVS등에서 확인 필요)
7. 결론
USER_UPDATABLE_COLUMNS는 Oracle에서 뷰 또는 테이블의 컬럼이 수정 가능한지를 판단하는 데 매우 유용한 뷰입니다. 이를 통해 **SQL 기반 애플리케이션의 안정성과 데이터 무결성**을 확보할 수 있으며, 사용자 인터페이스, 자동화 스크립트, 권한 검증 도구에 연동함으로써 보다 정밀한 데이터 제어 전략을 설계할 수 있습니다.
8. 출처
- Oracle Corporation. Oracle Database Reference
- Practical Oracle SQL, Kim Berg Hansen
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_VARRAYS : VARRAY 타입 구조 분석 및 활용 전략 (0) | 2025.08.12 |
|---|---|
| [ORACLE] USER_USTATS : 통계 수집 상태 및 최적화 전략 완전 분석 (0) | 2025.08.12 |
| [ORACLE] USER_UNUSED_COL_TABS : 삭제된 컬럼 정보 조회와 정리 전략 (0) | 2025.08.11 |
| [ORACLE] USER_TYPE_METHODS : 객체 타입 메서드 설계 및 분석 전략 (0) | 2025.08.10 |
| [ORACLE] USER_TYPE_ATTRS : 사용자 정의 객체 타입 속성 분석 가이드 (0) | 2025.08.10 |