반응형
반응형
반응형

========
오라클
========
!! 트리거,트리거백업,트리거업뎃,after,before

create table tr1(name varchar2(10), age number(3));
create table test1(name varchar2(10), age number(3));
create table test(name varchar2(10), age number(3), tel varchar2(16));
==============================================
트리거 연습
create trigger t1_trigger
after insert on test
begin
insert into tr1 values('park',25);
end;
/

insert into test values('hong',25,'1234-44');
select * from tr1;
insert into test values('nam',25,'1334-44');
select * from tr1;

drop trigger t1_trigger;
===================================================
지우면 아래 값넣기
create trigger tr2_trigger
after delete on test1
for each row
begin
insert into tr1 values('행트리거',10);
end;
/

insert into test1 values('11',22);

delete test1;
하면
insert into tr1 values('행트리거',10);가 실행된다
====================================
지우기전에 빽업
create trigger tr3_trigger
after delete on test1
for each row
begin
insert into tr1 values(:old.name,:old.age);
end;
/

insert into test1 values('qqqq',31);

delete test1;

select * from tr1;
=====================================

사원 테이블에서 2000보다 많은 봉급을 받는 여사원들의 봉급이
update 되면 update_tab3 table 에('sawon',1,'female') data 를 insert (행 trigger)

create table update_tab3(name varchar2(10), su number(3), tel varchar(10));

create trigger ex_tri5
after update of sapay on sawon for each row
when(old.sapay>2000 and old.sasex='여자')
begin
insert into update_tab3 values('sawon',1,'femail');
end;
/

select * from sawon;
update sawon set sapay=sapay*0.9 where sasex='여자'; 
select * from update_tab3;
select * from sawon;
===========================================================
사원 테이블의 data 가 update 될때 이전에 있던 데이터를 savesawon 테이블에 insert
create table savesawon(name, job,pay,bouns)
as select saname, sajob, sapay,sapay*0.7 from sawon;

create trigger up_tri
before update on sawon for each row
begin
insert into savesawon values
(:old.saname,:old.sajob,:old.sapay,:old.sapay*0.7);
end;

select * from sawon;
update sawon set sapay=sapay*1.1;
select * from savesawon;
select * from sawon;
===========================================
sawon table data 가 update 될때 새로운 data 를 newsawon table 에 insert

create table newsawon(name,job,pay,bouns)
as select saname,sajob,sapay,sapay*0.7
from sawon;

create or replace trigger up_tri2
after update on sawon for each row
begin
insert into newsawon values
(:new.saname,:new.sajob,:new.sapay,:new.sapay*0.7);
end;
/

select * from sawon;

update sawon set sapay=sapay*0.9;
select * from newsawon;
===================================================================
if book_loan(책대출 테이블)에 data insert 시 같은 책의 id를 가진책을
book_loan tale(책정보)에서 loan column을 Y 대출중 표시 로 update

create table book_info
(id number primary key, bookname varchar2(10),loan char(2));

create table book_loan
(id number, anem varchar2(10),
constraints book_fk foreign key(id)
references book_info(id));

insert into book_info values(1,'computer','n');
insert into book_info values(2,'economy','n');
insert into book_info values(3,'science','n');

create trigger book_tri
after insert on book_loan for each row
begin
update book_info set loan='y'
where book_info.id = :new.id;
end;
/

insert into book_loan values(1,'kim');
select * from book_info;

 

반응형

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

날짜 계산 - 날짜 차이  (0) 2009.02.11
Date 포멧..  (0) 2009.02.11
계층적 쿼리 connect by  (0) 2009.02.11
group by  (0) 2009.02.11
오라클 페이징 (서브쿼리)  (0) 2009.02.11
반응형
하나의 데이터베이스에 여러 테이블이 있는데 alarm table에 새로운 레코드가 insert 되면
트리거를 통해 같은 데이터베이스 taglist_t 테이블에도 insert가 되도록 하고 싶습니다.

delimiter //
CREATE TRIGGER t_alarm AFTER INSERT ON alarm FOR EACH ROW BEGIN
INSERT INTO taglist_t SET
TagNmae=new.TAG_NAME
,TagDate=new.DATE
,TagDesc=new.TAG_DESC
;
END;
//
delimiter ;
반응형

'Database > Mysql' 카테고리의 다른 글

between  (0) 2009.02.11
UNIQUE KEY  (0) 2009.02.11
Joing 방법 종류 정리  (0) 2009.02.11
insert... select  (0) 2009.02.11
간단한 join  (0) 2009.02.11

+ Recent posts