테이블1. 회원테이블 CREATE TABLE tbl_member( id VARCHAR2(6), name VARCHAR2(15) NOT NULL, birth DATE NOT NULL, address VARCHAR2(300) NOT NULL, pw VARCHAR2(300) NOT NULL, email VARCHAR2(300), grade CHAR(1) DEFAULT 'A', CONSTRAINT pk_member_id PRIMARY KEY(id) )
테이블2. 삭제 히스토리 테이블
CREATE TABLE tbl_delete_member( id VARCHAR2(6), name VARCHAR2(15), deletedate DATE )
트리거
CREATE or REPLACE TRIGGER tr_delete AFTER DELETE ON tbl_member FOR EACH ROW BEGIN INSERT INTO tbl_delete_member VALUES (old.id, old.name, curdate()); END; /
여기저기 정보 찾으면서 수정해봤는데
delete 시 insert 트리거가 잘 안되서 질문드리려 왔습니다
어디서 오류가 난걸까요 ??
고수님들 조언 구하고자 합니다
1. old 앞에 콜론 누락 ( old -> :old )
2. 다른 DBMS(MySQL) 함수 사용? ( curdate() -> sysdate )
감사합니다 마농님
CREATE or REPLACE TRIGGER tr_delete AFTER DELETE ON tbl_member FOR EACH ROW BEGIN INSERT INTO tbl_delete_member VALUES (:old.id, :old.name, SYSDATE); END; /
말씀하신대로 수정하니 트리거 생성에는 성공했습니다
그런데
### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-04098: trigger 'DW5.TBL_DELETE_MEMBER' is invalid and failed re-validation
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: DELETE FROM tbl_member WHERE id = ? AND pw = ?
### Cause: java.sql.SQLSyntaxErrorException: ORA-04098: trigger 'DW5.TBL_DELETE_MEMBER' is invalid and failed re-validation
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-04098: trigger 'DW5.TBL_DELETE_MEMBER' is invalid and failed re-validation
]을(를) 발생시켰습니다.
java.sql.SQLSyntaxErrorException: ORA-04098: trigger 'DW5.TBL_DELETE_MEMBER' is invalid and failed re-validation
재컴파일도 해보고 트리거 삭제 후 재생성도 해보았는데 같은 오류가 발생합니다
delete 시 where 절로 id, pw 를 주어서 트리거 테이블에도 필요한가 해서 추가해봤는데 그것도 안되네요
혹시 해결 방안을 알고 계실까요 ??
TBL_DELETE_MEMBER 테이블이 온전한지 확인해 보세요.
TBL_DELETE_MEMBER 테이블에 TBL_DELETE_MEMBER 라는 동일한 이름으로 트리거가 걸려있는게 아닐까요?
와 감사합니다
연습하면서 만졌던 이런저런 트리거들이 엄청 걸려있었네요
덕분에 해결했습니다