테이블 A가 있습니다. 테이블 A에는 번호와 차수가 있습니다.
테이블 A 에 인서트시에 A테이블 레코드의 rowid를 B테이블에 적재하는 트리거를 작성하였습니다.
테이블 A에서 같은 데이터에 대해 차수만 변경이 생길시에 update가 안되고 insert가 되는구조로 되어있습니다.
결국 새로운 데이터가 들어오는거죠.. 이전차수데이터 최근 차수 데이터..
B테이블에 전에(이전차수) 쌓였던 데이터의 rowid 를 지우고 지금 새로 인서트된(최근차수) 데이터의 rowid를 넣어주려면 insert trigger에서 어떻게 처리해야할까요.. 테이블 A의 PK는 x필드와, y필드의 조합입니다.
B테이블에 최근차수만 남게 하고싶습니다..
제가 작성한 트리거 구문은 다음과 같습니다. 전에 자기자신테이블이 변경시 나는 오류를 피하기위해
AFTER를 BEFORE로 변경했습니다. 그래도 오류가 나네요..
CREATE OR REPLACE TRIGGER insert_trigger BEFORE INSERT ON "테이블 A" FOR EACH ROW
DECLARE
v_temp_key VARCHAR2(100);
v_temp_key2 VARCHAR2(100);
BEGIN
SELECT x, rowid INTO v_temp_key, v_temp_key2
FROM 테이블 A
WHERE x = :NEW.x;
IF(v_temp_key = :NEW.x) THEN
delete from 테이블B where ROW_ID=v_temp_key2;
END IF;
INSERT INTO 테이블B values(:NEW.rowid);
END;