트리거란 특정 테이블의 데이터에 변경이 이루어졌을 때 자동으로 다른 어떤 작업이 함께 수행되도록 설정하는 것이다.
트리거는 매우 편리하지만 부작용도 크기 때문에, 트리거를 사용하는 것이 좋은지에 대해서는 많은 찬반 여론이 있다.
1) 문장 레벨 트리거: 정해진 DML문이 실행될 때에 처음 한 번만 트리거 실행
create or replace trigger trg_01
after insert
on emp11
begin
dbms_output.put_line('신입사원이 추가되었습니다.');
end;
2) 행 레벨 트리거(FOR EACH ROW) - DML문이 실행되어 ROW가 추가/삭제/변경될 때마다 트리거 실행
create or replace trigger trg02
after insert
on emp11
for each row
begin
insert into sal01 values(sal01_salno_seq.nextval, 3000, :NEW.empno);
END;
create or replace trigger trg03
after delete
on emp11
for each row
begin
delete from sal01
where empno = :OLD.empno;
end;
1) INSERT
:OLD - NULL
:NEW - 입력 값
2) UPDATE
:OLD - 변경 전 값
:NEW - 변경 후 값
3) DELETE
:OLD - 삭제 전 값
:NEW - NULL
DROP TRIGGER 트리거명