강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

초간단 트리거강좌

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

초간단 트리거강좌

 

트리거는 insert, update, delete등의 질의가 올때 이의 전/후에서 어떤 작업을 할지
지정할 수 있는 수단을 제공해준다. 뭐 꼭 insert,update,delete뿐 아니라 다른 것에도
되지만.. 일단 이 부분만 보는것이 이해하기에 좋을것 같다.
일단 간단한 예를 보자.

SQL> desc test;
 이름                                      널?      유형
 ----------------------------------------- -------- ----------------------------
 NAME                                               VARCHAR2(10)
 AGE                                                NUMBER

SQL> desc test2;
 이름                                      널?      유형
 ----------------------------------------- -------- ----------------------------
 NAME                                               VARCHAR2(10)

SQL> create or replace trigger test_insert_t1
  2  after 
  3  insert or delete or update on test 
  4  for each row
  5  
  6  begin
  7  
  8  if INSERTING then
  9      INSERT INTO test2 values (:new.name);
 10  end if;
 11  
 12  if DELETING then
 13      DELETE FROM test2 where test2.name = :old.name;
 14  end if;
 15  
 16  if UPDATING then
 17      UPDATE test2 set name = :new.name where name = :old.name;
 18  end if;
 19  
 20  end;
 21  /

트리거가 생성되었습니다.

SQL> insert into test values ('강명규', 28);

1 개의 행이 만들어졌습니다.

SQL> select * from test;

NAME              AGE
---------- ----------
강명규             28

SQL> select * from test2;

NAME
----------
강명규

SQL> update test set name='홍길동' where name='강명규';

1 행이 갱신되었습니다.

SQL> select * from test;

NAME              AGE
---------- ----------
홍길동             28

SQL> select * from test2;

NAME
----------
홍길동

SQL> delete from test;

1 행이 삭제되었습니다.

SQL> select * from test;

선택된 레코드가 없습니다.

SQL> select * from test2;

선택된 레코드가 없습니다.

SQL> 


설명
쉬운 예제라 설명할 것이 별로 없다.
test, test2테이블이 있다.
test에 insert, update, delete문이 사용될때, 이를 test2테이블에도 반영한다.

:new
새로 변경되는 데이터(insert시는 새로 insert되는 데이터, update시 변경된 데이터)

:old
기존의 데이터(update, delete시)


트리거의 종류
row, statement
before, after
instead of

user_triggers

음.. 시간이 부족해서 이쯤에서.. 

  

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,041 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  111 명