트리거
트리거는 테이블에 삽입 , 수정, 삭제등의 작업을 할때 자동으로 작동되는 개체로
프로시저와 비슷한 모양을 갖는다.
하지만 트리거에는 스토어드 프로시저와 달리 IN OUT 매개변수를 사용할 수도 없다.
-- 테이블 생성
SELECT * FROM testTbl;
create TABLE IF NOT EXISTS testTbl5(id INT, txt VARCHAR(10));
INSERT INTO testTbl5 VALUES(1,'EXID');
INSERT INTO testTbl5 VALUES(2,'AFTERS');
INSERT INTO testTbl5 VALUES(3,'IOI');
DROP TRIGGER IF EXISTS testTrg;
DELIMITER //
CREATE TRIGGER testTrg -- 트리거 이름
AFTER DELETE -- 삭제 후에 작동되도록 지정
ON testTbl5 -- 트리거를 부착할 테이블
for each row -- 각행마다 적용시킴
begin
set @msg = 'delete complet'; -- 트리거 실행시 작동되는 코드
end //
delimiter ;
-- 데이터를 삽입 , 수정, 삭제 해보자
set @msg = '';
insert into testTbl5 VALUES(4,'nine');
select @msg;
update testTbl5 set txt = 'apink' where id = 3;
select @msg;
delete from testTbl5 where id = 4;
select @msg;
-- paste table make
create TABLE IF NOT EXISTS checkcheck(id INT, txt VARCHAR(10));
-- update
DROP TRIGGER IF EXISTS backupTbl;
DELIMITER $$
CREATE TRIGGER backupTbl
AFTER UPDATE
ON testTbl5
for each row
begin
insert into checkcheck VALUES(OLD.id,OLD.txt);
END //
DELIMITER ;
-- delete
DROP TRIGGER IF EXISTS backup_del_Tbl;
DELIMITER $$
CREATE TRIGGER backup_del_Tbl
AFTER delete
ON testTbl5
for each row
begin
insert into checkcheck VALUES(OLD.id,OLD.txt);
END //
delimiter ;
-- CHECK TABLE
SELECT * FROM testTbl5;
update testTbl5 set txt ='big' where id = 1;
delete from testTbl5 where id=2;
commit;
select * from checkcheck;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | 트리거 트리거는 테이블에 삽입 , 수정, 삭제등의 작업을 할때 자동으로 작동되는 개체로 프로시저와 비슷한 모양을 갖는다. 하지만 트리거에는 스토어드 프로시저와 달리 IN OUT 매개변수를 사용할 수도 없다. -- 테이블 생성 SELECT * FROM testTbl; create TABLE IF NOT EXISTS testTbl5(id INT, txt VARCHAR(10)); INSERT INTO testTbl5 VALUES(1,'EXID'); INSERT INTO testTbl5 VALUES(2,'AFTERS'); INSERT INTO testTbl5 VALUES(3,'IOI'); DROP TRIGGER IF EXISTS testTrg; DELIMITER // CREATE TRIGGER testTrg -- 트리거 이름 AFTER DELETE -- 삭제 후에 작동되도록 지정 ON testTbl5 -- 트리거를 부착할 테이블 for each row -- 각행마다 적용시킴 begin set @msg = 'delete complet'; -- 트리거 실행시 작동되는 코드 end // delimiter ; -- 데이터를 삽입 , 수정, 삭제 해보자 set @msg = ''; insert into testTbl5 VALUES(4,'nine'); select @msg; update testTbl5 set txt = 'apink' where id = 3; select @msg; delete from testTbl5 where id = 4; select @msg; -- paste table make create TABLE IF NOT EXISTS checkcheck(id INT, txt VARCHAR(10)); -- update DROP TRIGGER IF EXISTS backupTbl; DELIMITER $$ CREATE TRIGGER backupTbl AFTER UPDATE ON testTbl5 for each row begin insert into checkcheck VALUES(OLD.id,OLD.txt); END // DELIMITER ; -- delete DROP TRIGGER IF EXISTS backup_del_Tbl; DELIMITER $$ CREATE TRIGGER backup_del_Tbl AFTER delete ON testTbl5 for each row begin insert into checkcheck VALUES(OLD.id,OLD.txt); END // delimiter ; -- CHECK TABLE SELECT * FROM testTbl5; update testTbl5 set txt ='big' where id = 1; delete from testTbl5 where id=2; commit; select * from checkcheck; | cs |
'데이터 베이스 > MySQL' 카테고리의 다른 글
<실습> 2.mysql 내장함수(날짜,문자,숫자,JSON 등) 정리 (2) | 2017.05.11 |
---|---|
<실습> 1.mysql 기본 (4) | 2017.05.10 |
MYSQL 커서&CURSOR 예제&문제 16 (3) | 2016.12.20 |
MYSQL 뷰&VIEW 예제&문제 15 (4) | 2016.12.19 |
MYSQL 스토어드 함수 예제&문제 14 (4) | 2016.12.16 |
댓글