데이터 꿈나무
[SQL] 트리거 (Trigger) 란? 본문
트리거 (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
'Language > SQL' 카테고리의 다른 글
| [SQL] 인덱스 (Index) 란? (0) | 2022.10.24 |
|---|---|
| [SQL] 저장 프로시저 (Stored Procedure) 란? (0) | 2022.10.24 |
| [SQL] 뷰(View)란? (2) | 2022.10.06 |
| [SQL] SQL의 종류(데이터 제어어 DCL, 데이터 정의어 DDL, 데이터 조작어 DML) (2) | 2022.09.30 |
Comments