database trigger 질문입니다
안녕하세요~ 데이터 베이스 트리거 작성중에 질문 올립니다~
현재 사용하는건 MYSQL 5.2 Workbench 버전을 쓰고 있구요
A라는 테이블이 있고 A 테이블 안에는
rowid(PK, AI, 자료형 INT), id(int), fid(int) 이렇게 2가지가 있습니다
제가 원하는건
insert into A ( id, fid ) values ( 7, 8 ); 명령이 수행 될 경우
실제 A 테이블에 저장되는 값은
rowid id fid
1 7 8
2 8 7
이렇게 저장되는 것입니다
아는지식을 총동원해서 trigger를 짜보긴 했는데
트리거 적용 후 insert문 실행 시 매번
insert into test.A(id, fid) values (7, 8) Error Code: 1146. Table 'test.A' doesn't exist
이런 에러만 볼 수 있었습니다
적용한 트리거는
------------------------------------------------------------
CREATE TRIGGER `A_BUPD` BEFORE UPDATE ON A FOR EACH ROW
BEGIN
DECLARE ID int;
DECLARE FID int;
SET PID = NEW.id;
SET FPID = NEW.fid;
INSERT INTO A (id, fid) values (FID, ID);
END
------------------------------------------------------------
이렇게 해 보았었습니다.
트리거가 걸려있는 테이블을 트리거 안에서 변경하는
트리거가 걸려있는 테이블을 트리거 안에서 변경하는 sql문은 허용되지 않습니다.
http://dev.mysql.com/doc/refman/5.5/en/faqs-triggers.html#qandaitem-B-5-1-9
해당 트랜잭션과 관계없는 제3의 테이블을 변경한다거나, 아래의 페이지에 나오는 식으로
BEFORE INSERT 트리거에서 new 데이터를 변경하여 해당 row에 영향을 주는 것은 허용되고요.
(위에 인용한 FAQ도 여기서 따 온 것입니다)
http://www.dbforums.com/mysql/1676515-trigger-problem-inserting-updating-same-table.html
제가 보기엔, 지금 원하시는 작업은 트리거로 해결할 문제가 아니고
stored procedure를 만들어 다룰 문제인 것 같습니다.
(id, fid)를 받아서 두 개의 row를 insert하는 프로시저를 만들면 되겠죠.
댓글 달기