Oracle/SQL2011. 7. 11. 23:21





Q :  

view는 dml이 수행될까?

A :

simple view 일 경우는 dml이 수행되지만, table을 가공한 virtual column일 경우에는 dml 수행이 되지 않는다.




테스트를 해보자.

테이블을 생성하고, 데이터를 넣는다.


SQL> create table t1 (col1 number, col2 varchar2(100));

insert into t1
select level, 'A'
from dual
connect by level <= 10
union all
select level+12 , 'B'
from dual
connect by level <= 10
union all
select level+30, 'C'
from dual
connect by level <= 10;


commit;



뷰를 생성하고 데이터를 넣는다.

SQL> create view m_t1
         as
         select * from t1

SQL> insert into m_t1 values (20, 'D');



뷰를 확인했을 때도 데이터가 나오고, 테이블을 확인했을 때도 데이터가 나온다.


SQL> select * from m_t1 where col2 = 'D';

      COL1 COL2
---------- --------------------
 20 D

SQL> select * from t1 where col2 ='D';

      COL1 COL2
---------- --------------------
 20 D



그러면 뷰의 정의를 조금 다르게 하고, 뷰에 데이터를 입력해보자.

create view m_t1_2
as
select sum(col1) as col1, col2
from t1
group by col2;

SQL> insert into m_t1_2 values (32, 'E');
insert into m_t1_2 values (32, 'E')
*
ERROR at line 1:
ORA-01733: virtual column not allowed here



에러가 발생한다. 가상 컬럼은 여기에 들어갈 수 없다. 라고 나온다.


'Oracle > SQL' 카테고리의 다른 글

테이블 및 컬럼의 COMMENT 확인  (0) 2016.11.18
RANK() VS. DENSE_RANK()  (0) 2012.01.16
현재 SCN 구하기  (0) 2010.10.01
히든 파라미터 확인 SQL  (0) 2010.09.01
Correlated Sub Query(상호관련 서브 쿼리)  (1) 2009.12.15
Posted by 자수성가한 부자