Oracle/PL_SQL2009. 11. 18. 15:42
instead of trigger는 뷰에 대한 문장으로 변경 수행되는 것을 가능하게 한다.

다음의 예제는 뷰에 대하여 insert 문장을 수행할 경우
그 문장이 테이블에 대한 insert 문장으로 변경되도록 하는 예제이다.


실습용 테이블을 테이블을 만든다.
기존에 테이블이 있을 경우를 대비해 삭제 명령어도 넣었다.

SQL> drop table t1 purge;
SQL> create table t1
         (col1 varchar2(4),
          col2 varchar2(2),
          col3 varchar2(2),
          col4 varchar2(10));


다음으로 뷰를 생성한다.

create or replace view v1
as
select col4
from t1;


트리거를 생성한다.
8개의 문자가 뷰에 insert가 되면 테이블에 나눠서 입력되는 트리거이다.

SQL>create or replace trigger t1_v1_tri
         instead of insert on v1
        begin
            insert into t1 (col1, col2, co3)
        values(substr(:new.col4,1,4),substr(:new.col4,5,2),substr(:new.col4,6,2));
        end;
        /


뷰에 insert를 해본다.

SQL> insert into v1 values ('20091126');


결과를 확인해본다.

SQL> select * from t1;


결과가 잘 들어간 것을 확인할 수 있다.

COL1 COL2 COL3 COL4
2009 11 12  


출처 : http://blog.naver.com/gseducation?Redirect=Log&logNo=20092680151

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

trigger(primary key & foreign key 관련)  (0) 2009.11.28
print_table프로시져 만들기  (0) 2009.11.18
trigger  (0) 2009.11.17
package의 overloading  (0) 2009.11.17
테이블 변경시 관련 procedure, function, package 확인  (0) 2009.11.16
Posted by 자수성가한 부자