Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- quert
- redux
- forNmae()
- AWS
- exiting abnormally
- 자료구조
- paraller
- .getClass()
- 커스텀 로그인
- 자바
- Java Reflextion API
- 오라클 병렬처리
- 애그리거트
- $emit()
- 리덕스
- react
- VUE
- vue.js
- 리액트
- 네임드 뷰
- 트리 회전
- 컴포넌트 주도
- 오라클
- ACCESS_REFUSED
- EBS
- REDIS
- 리덕스 공식문서
- 도커빌드
- Express
- rabbitmq 에러
Archives
- Today
- Total
개발정리
[오라클] 수정 가능한 조인 뷰 본문
전통적인 방식의 조인 뷰
UPDATE 고객
SET (최종거래일시,최근거래금액) = (SELECT max(거래일시),sum(거래금액)
FROM 거래
WHERE 고객번호 = 고객.고객번호
AND 거래일시 >= TRUNC(ADD_MONTHS(SYSDATE,-1)))
WHERE EXISTS ( SELECT 'X'
FROM 거래
WHERE 고객번호 = 고객.고객번호
AND 거래일시 >= TRUNC(ADD_MONTHS(SYSDATE,-1)))
- UPDATE를 위해 테이블을 2번 엑세스 해야하는 문제 발생
- 서브쿼리에 unnest와 함께 hash_sj 힌트를 사용하면 효과적이지만 테이블을 두번 엑세스하는 비효율 존재
수정 가능한 조인 뷰
수정 가능한 뷰는 INSERT, UPDATE, DELETE와 같은 DML(Data Manipulation Language) 작업을 뷰를 통해 실행할 수 있는 뷰입니다. 기본적으로 뷰는 데이터를 수정할 수 없습니다. 그러나 특정 조건을 만족하면, 조인 뷰도 수정이 가능합니다.
UPDATE
(select c.최종거래일시,c.최근거래금액,t.거래일시,t.거래금액
from (select 고객번호,max(거래일시) 거래일시, sum(거래금액) 거래금액
from 거래
where 거래일시 >= trunc(add_months(sysdate,-1))
group by 고객번호) t
, 고객 c
where c.고객번호 = t.고객번호)
set 최종거래일시 = 거래일시
,최근거래금액 = 거래금액
다만 한가지 제약이 존재
- 키-보존 테이블 에만 입력,수정,삭제가 허용
키-보존 테이블
조인된 결과 집합을 통해서도 중복 없이 Unique하게 식별이 가능한 테이블
-> 1:M 테이블에서 M쪽 테이블
-> 즉, 외래키를 가지고 있는 테이블을 의미
참조
SQL전문가 가이드
'CS > SQL' 카테고리의 다른 글
| [오라클] HWM(High Water Mark) (0) | 2025.10.12 |
|---|---|
| [오라클] dual테이블에 대해서 (0) | 2025.04.16 |
| 오라클 PL/SQL 알아보기 (0) | 2025.04.13 |
| 오라클 paraller 문 (0) | 2025.03.05 |
| SELECT FOR UPDATE문 (0) | 2025.03.04 |