트리거
테이블에 삽입, 수정, 삭제 등의 작업(이벤트)이 발생할 때 자동적으로 작동하는 데이터 베이스 개체
프로시저와 달리 직저 실행시킬 수 없고 오직 해당 테이블에 이벤트가 발생할 경우에만 실행된다.
이벤트 발생 후 ROLLBACK 할 수 없다.
▶ 트리거 형식
▶ 트리거 상태
ALTER TRIGGER [트리거 이름] ENABLE : 트리거 사용
ALTER TRIGGER [트리거 이름] DISABLE : 트리거 사용 중지
ALTER TRIGGER [트리거 이름] COMPILE : 트리거 컴파일
트리거 실습
실습1
DELIMITER $$
CREATE TRIGGER tb_member_trigger_after_delete
AFTER DELETEON tb_member_trigger FOR EACH ROW
BEGIN
BEGIN
SET @msg='DELETE 트리거 발동';
END
END $$
DELIMITER;
실습2
SET @msg:='';
DELETE
FROM
tb_member_trigger
WHERE
m_id = 'id015';
SELECT @msg;
실습3
after 트리거
CREATE TABLE `tb_member_trigger_backup` (
`m_id` VARCHAR(200) NOT NULL,
`m_pw` VARCHAR(200) NOT NULL,
`m_name` VARCHAR(200) NOT NULL,
`m_level` INT(11) NULL DEFAULT NULL,
`m_email` VARCHAR(200) NOT NULL,
`m_addr` VARCHAR(200) NOT NULL,
`m_reg_date` DATE NOT NULL,
`m_modify_type` VARCHAR(50) NULL DEFAULT NULL,
`m_modify_date` DATE NULL DEFAULT NULL,
`m_modify_user` VARCHAR(200) NULL DEFAULT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
after update 트리거
BEGIN
INSERT INTO tb_member_trigger_backup
( m_id
, m_pw
, m_name
, m_level
, m_email
, m_addr
, m_reg_date
, m_modify_type
, m_modify_date
, m_modify_user
) VALUES (
OLD.m_id
, OLD.m_pw
, OLD.m_name
, OLD.m_level
, OLD.m_email
, OLD.m_addr
, OLD.m_reg_date
, '수정'
, CURDATE()
, CURRENT_USER());
END
after delete 트리거
BEGIN
INSERT INTO tb_member_trigger_backup
( m_id
, m_pw
, m_name
, m_level
, m_email
, m_addr
, m_reg_date
, m_modify_type
, m_modify_date
, m_modify_user
) VALUES (
OLD.m_id
, OLD.m_pw
, OLD.m_name
, OLD.m_level
, OLD.m_email
, OLD.m_addr
, OLD.m_reg_date
, '삭제'
, CURDATE()
, CURRENT_USER());
END
'데이터베이스' 카테고리의 다른 글
Transction(트랜잭션) (0) | 2020.04.21 |
---|---|
Stored Function (함수) (0) | 2020.04.13 |
Stored Procedure (프로시저) (0) | 2020.04.13 |
Stored Program (0) | 2020.04.13 |
View(뷰) (0) | 2020.04.06 |