데이터 꿈나무

[SQL] 트리거 (Trigger) 란? 본문

Language/SQL

[SQL] 트리거 (Trigger) 란?

ye_ju 2022. 10. 24. 11:35
트리거 (Trigger) 란?

특정 데이터베이스의 테이블이나 뷰에 대해 UPDATE, INSERT, 또는 DELETE문을 실행할 때 자동으로 무결성을 보장하도록 하는 특수한 형태의 프로시저

 

저장 프로시저 (Stored Procedure)와 다른 점
  • 데이터 수정 시 별도의 프로시저 호출이 필요없이 자동으로 수행
  • 직접적으로 호출 불가
  • 매개변수 사용불가

 

트리거 (Trigger) 생성
# AFTER로 정의!
CREATE TRIGGER trg_up_ins  -- 생성할트리거의 이름
ON instructor  -- 만약 instructor테이블에 업데이트가 발생하게 되면 업데이트가 진행된 이후의 instructor테이블을 전부 다 조회하겠다는 뜻
AFTER UPDATE -- 업데이트가 발생할 때 호출
AS
SELECT * FROM instructor
 
 
# FOR로 정의 !!(AFTER와 똑같이 출력)
CREATE TRIGGER trg_up_insted  -- 생성할트리거의 이름
ON instructor  -- 만약 instructor테이블에 업데이트가 발생하게 되면 업데이트가 진행된 이후의 instructor테이블을 전부 다 조회하겠다는 뜻
FOR UPDATE -- 업데이트가 발생할 때 호출
AS
SELECT * FROM instructor


# INSTEAD OF로 정의 !! -> 실행해도 값이 변하지 않음
CREATE TRIGGER trg_up_insted  -- 생성할트리거의 이름
ON instructor  -- 만약 instructor테이블에 업데이트가 발생하게 되면 업데이트가 진행된 이후의 instructor테이블을 전부 다 조회하겠다는 뜻
INSTEAD OF UPDATE -- 업데이트가 발생할 때 호출
AS
SELECT * FROM instructor

 

트리거 (Trigger) 사용
-- instructor테이블의 dept_name = 'Comp.Sci.'인 것의 salary를 모두 90000으로 변경(업데이트)하는 코드
UPDATE instructor
SET salary = 90000
WHERE instructor.dept_name = 'Comp.Sci.'

 

트리거 (Trigger) 삭제
DROP TRIGGER trg_up_ins

 

Comments