질문----------------------------------------------------------------
create or replace view test
create or replace view test
as
select e.empno, d.deptno
from emp e, dept d
where e.deptno = d.deptno
with check option
- emp테이블 + dept테이블 =>test 뷰 생성
(empno,deptno 은 각각의 테이블의 기본키)
그리고선
- emp테이블 + dept테이블 =>test 뷰 생성
(empno,deptno 은 각각의 테이블의 기본키)
그리고선
insert into test
결론----------------------------------------------------------------
10g에서 서로 다른 테이블의 칼럼을 조인하여 만든 뷰의 경우 데이터의 추가는 제한적이다.
values(1234,10)
를 실행하였더니
"ORA-01733: 가상 열은 사용할 수 없습니다"
두 테이블을 조인하여 만든 뷰에는 값을 추가 할수 없는건가?
답변----------------------------------------------------------------
테스트해보니 재미있는 결과가 나오네요.
11g 에서는 에러 안나네요.
10g 에서는 에러가 나구요.
실행계획을 비교해 봤더니
11g 에서는 fk_dept 인덱스를 이용하여
deptno가 널이 아닌 rowid 를 가져와 emp 테이블을 스캔합니다.
즉, d.deptno 를 읽지 않는 것이죠.
아마 실행쿼리가 변형되어 d.deptno 가 e.deptno 로 봐뀌었을 듯 하네요.
혹시나 해서 fk_deptno 인덱스를 삭제하고 했더니.
그냥 emp 풀스캔 하네요. 역시나 dept 테이블은 읽지 않습니다.
결론은 d.deptno 가 e.deptno 로 바뀌어
두개 컬럼이 모두 emp의 컬럼이 되며 Insert 를 수행하면 문제 없이 emp로 입력됩니다.
그러나 10g의 실행계획을 확인해 보면
dept 테이블이나 인덱스를 읽어 emp 와 조인합니다.
즉, d.deptno 는 dept의 컬럼이고 e.empno 는 emp 의 컬럼인거죠.
쿼리 변형이 읽어나지 않았습니다.
두개 컬럼이 서로 다른 테이블을 바라보고 잇어서 입력이 안됩니다.
쿼리를 d.deptno 대신 e.deptno 로 바꾸시면 입력됩니다.
출처 : http://oracleclub.com/article/55478
를 실행하였더니
"ORA-01733: 가상 열은 사용할 수 없습니다"
두 테이블을 조인하여 만든 뷰에는 값을 추가 할수 없는건가?
답변----------------------------------------------------------------
테스트해보니 재미있는 결과가 나오네요.
11g 에서는 에러 안나네요.
10g 에서는 에러가 나구요.
실행계획을 비교해 봤더니
11g 에서는 fk_dept 인덱스를 이용하여
deptno가 널이 아닌 rowid 를 가져와 emp 테이블을 스캔합니다.
즉, d.deptno 를 읽지 않는 것이죠.
아마 실행쿼리가 변형되어 d.deptno 가 e.deptno 로 봐뀌었을 듯 하네요.
혹시나 해서 fk_deptno 인덱스를 삭제하고 했더니.
그냥 emp 풀스캔 하네요. 역시나 dept 테이블은 읽지 않습니다.
결론은 d.deptno 가 e.deptno 로 바뀌어
두개 컬럼이 모두 emp의 컬럼이 되며 Insert 를 수행하면 문제 없이 emp로 입력됩니다.
그러나 10g의 실행계획을 확인해 보면
dept 테이블이나 인덱스를 읽어 emp 와 조인합니다.
즉, d.deptno 는 dept의 컬럼이고 e.empno 는 emp 의 컬럼인거죠.
쿼리 변형이 읽어나지 않았습니다.
두개 컬럼이 서로 다른 테이블을 바라보고 잇어서 입력이 안됩니다.
쿼리를 d.deptno 대신 e.deptno 로 바꾸시면 입력됩니다.
출처 : http://oracleclub.com/article/55478
결론----------------------------------------------------------------
10g에서 서로 다른 테이블의 칼럼을 조인하여 만든 뷰의 경우 데이터의 추가는 제한적이다.
'ORACLE > 문제해결' 카테고리의 다른 글
ORA-24324, ORA-24323, ORA-01090 문제해결 (0) | 2012.04.07 |
---|---|
ORA-12560 에러 해결방법 (0) | 2012.03.28 |
ORA-14551 에러 해결방법 (0) | 2012.03.18 |
ORA-12514 에러 해결방법 (윈도우) (2) | 2012.03.17 |
유저 비밀번호 변경시 (0) | 2012.03.14 |