instead of trigger는 뷰에 대한 문장으로 변경 수행되는 것을 가능하게 한다.
다음의 예제는 뷰에 대하여 insert 문장을 수행할 경우
그 문장이 테이블에 대한 insert 문장으로 변경되도록 하는 예제이다.
실습용 테이블을 테이블을 만든다.
기존에 테이블이 있을 경우를 대비해 삭제 명령어도 넣었다.
다음으로 뷰를 생성한다.
트리거를 생성한다.
8개의 문자가 뷰에 insert가 되면 테이블에 나눠서 입력되는 트리거이다.
뷰에 insert를 해본다.
결과를 확인해본다.
결과가 잘 들어간 것을 확인할 수 있다.
출처 : http://blog.naver.com/gseducation?Redirect=Log&logNo=20092680151
다음의 예제는 뷰에 대하여 insert 문장을 수행할 경우
그 문장이 테이블에 대한 insert 문장으로 변경되도록 하는 예제이다.
실습용 테이블을 테이블을 만든다.
기존에 테이블이 있을 경우를 대비해 삭제 명령어도 넣었다.
SQL> drop table t1 purge;
SQL> create table t1
(col1 varchar2(4),
col2 varchar2(2),
col3 varchar2(2),
col4 varchar2(10));
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;
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;
/
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 |