두개 이상의 테이블을 조이뷰를 만들어서 업데이트를 진행 할 수 있다.
아래 테스트 쿼리를 가지고 테스트 해볼수 있고 쉬우니 한번 해보시기 바람니다.
1. SAMPLE 데이터 생성
CREATE TABLE A(
F1 INT PRIMARY KEY,
F2 VARCHAR2(10),
F3 VARCHAR2(10)
);
CREATE TABLE B(
F1 INT PRIMARY KEY,
F2 VARCHAR2(10),
F3 VARCHAR2(10)
);
INSERT INTO A VALUES(1, 'B','1');
INSERT INTO B VALUES(1, 'C','1');
commit;
조인뷰를 통한 업데이트 수행.
UPDATE (
SELECT
A.F1 V1, A.F2 V2,A.F3 V3, B.F1 W1, B.F2 W2, B.F3 W3 FROM A, B WHERE A.F1 = B.F1 AND A.F2 = 'B'
)
SET
W2 = 'D', W3='4'
;
가능 하다..
UPDATE (
SELECT
A.F1 V1, A.F2 V2,A.F3 V3, B.F1 W1, B.F2 W2, B.F3 W3 FROM A, B WHERE A.F1 = B.F1 AND A.F2 = 'B'
)
SET
V2 = 'D', W3='4'
;
ORA-01776: 조인 뷰에 의하여 하나 이상의 기본 테이블을 수정할 수 없습니다.
왜 안될까 확인 해보니 조인뷰테이블이 2개 이상 일때 업데이트 Set절에 두개 이상의 테이블을 수정하는건 불가능한다.
오라클도 안되고 Tibero도 안된다. MySQL은 가능한것으로 확인 되었다.
drop table A purge;
drop table B purge;
'DBMS > Oracle' 카테고리의 다른 글
Oracle 이기종 DBLINK 제약사항 (0) | 2022.07.15 |
---|---|
Oracle 10g to 11g hotbackup 본으로 upgrade 하기 (0) | 2022.07.14 |
Lock 충돌 해결 In RAC (0) | 2020.01.16 |
RAC를 single instance로 바꾸기 (0) | 2020.01.16 |
10g이상 지원 shrink할 대상 찾는 function (0) | 2020.01.16 |