트리거 BEFORE와 AFTER 같이 사용가능 한가요? 0 5 2,638

by db초보 [MySQL] mysql 트리거 [2017.08.11 11:24:54]


트리거 공부중인데 BEFORE와 AFTER 같이 사용가능 한가요?

같이 사용가능하면 어떻게 해야되나요??

DELIMITER $$
CREATE
TRIGGER aa

BEFORE INSERT
    ON aa
    FOR EACH ROW BEGIN
INSERT INTO bb(aa,bb) VALUES(NOW(),"aa1");
UPDATE bb SET bb=bb+1 WHERE aa='aa';

AFTER INSERT
    ON aa
    FOR EACH ROW BEGIN
INSERT INTO bb(aa,bb) VALUES(NOW(),new.bb);
UPDATE bb SET bb=bb+1 WHERE aa='aa';
DELETE FROM bb WHERE bb='aa';
    END$$

DELIMITER ;

by 주킹 [2017.08.11 12:41:15]

두개를 구분해서 만드시는게..


by db초보 [2017.08.11 14:49:14]

두개 구분해서 만든다는게 어떻게 만들어야되는지를 몰르겠어요

하나씩은 했는데.. 어떻게 두개를 합쳐야되는지를요..


by jkson [2017.08.11 15:28:24]

두 개를 왜 합치려고 하시는 거죠? 그냥 각각 만들면 안 되나요?


by db초보 [2017.08.11 15:43:58]

아..각각 만들면 되네요.. 제가 잘못했는지 만들다가 안되는것 같아 질문을 올렸었는데..

댓글보고  BEFORE 트리거 aa만들고 AFTER 트리거 bb만들고 했더니 되네요..


by 마농 [2017.08.14 10:09:43]

오라클 11G 부터 compound trigger 사용이 가능합니다.
아!! mySQL 이군요...

CREATE OR REPLACE TRIGGER tri_compound_test
FOR INSERT OR UPDATE OR DELETE
ON test
COMPOUND TRIGGER

BEFORE STATEMENT IS
BEGIN
    NULL;
END;

BEFORE EACH ROW IS
BEGIN
    NULL;
END;

AFTER EACH ROW IS
BEGIN
    NULL;
END;

AFTER STATEMENT IS
BEGIN
    NULL;
END;

END;
/

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입