테스트로 테이블을 생성하고 트리거를 만들고 있는데 계속 오류가 나네요..
CREATE TRIGGER CODEGROUP_DELETE_TRIGGER
BEFORE DELETE ON TB_CODEGROUP
EXECUTE
delete from TB_LINKCODEGROUP
where CHILDID=OBJ.CODEGROUPID;
delete from TB_CODE
where CODEID in (select CODEID from TB_LINKCODE where CODEGROUPID = OBJ.CODEGROUPID);
;
이런식으로 삭제시 두개의 관련 테이블 데이터를 모두 지우고 원테이블 자료를 삭제하고 싶은데.. 안되네요..
모가 잘못된 걸까요? 오라클에서는 되는 거거든요...
CREATE TRIGGER CODEGROUP_DELETE_TRIGGER
BEFORE DELETE ON TB_CODEGROUP
EXECUTE
delete from TB_LINKCODEGROUP
where CHILDID=OBJ.CODEGROUPID;
delete from TB_CODE
where CODEID in (select CODEID from TB_LINKCODE where CODEGROUPID = OBJ.CODEGROUPID);
;
이런식으로 삭제시 두개의 관련 테이블 데이터를 모두 지우고 원테이블 자료를 삭제하고 싶은데.. 안되네요..
모가 잘못된 걸까요? 오라클에서는 되는 거거든요...
안녕하세요.
사용하신 질의에 대하여 아래와 같이 문의하셨는데 트리거와는 관련이 없게 되어있습니다.
delete from TB_CODE
where CODEID in (select CODEID from TB_LINKCODE where CODEGROUPID = OBJ.CODEGROUPID);
아마도 오타인 것 같아서 두 테이블에 대하여 GROUP 을 추가했습니다. TB_CODEGROUP, TB_LINKCODEGROUP...
또한 where 절에 OBJ. 이런 형식은 일반 질의에서는 지원되지 않습니다. 따라서 TB_CODEGROUP.CODEGROUPID 로 수정했습니다.
delete from TB_CODEGROUP
where CODEID in (select CODEID from TB_LINKCODEGROUP where CODEGROUPID = TB_CODEGROUP.CODEGROUPID);
수정된 질의에 대하여 테스트 해본 결과 잘 수행이 되고 있습니다.
문제가 된 스키마와 정확한 질의를 올려주시면 확인에 도움이 될 것 같습니다.