applications
테이블과 application_history
테이블이 있습니다. 나는 응용 프로그램의 이력을 유지하고 행이 applications
테이블에서 업데이트되어 해당 행을 실제로 업데이트되기 전에 application_history
으로 복사 할 때마다 트리거를 사용할 생각을 갖고 있습니다.테이블 A에서 행을 업데이트하기 전에 테이블 B에 행을 삽입하십시오.
는 순간, 나는 또 다른 SO 게시물에서이 코드를 기입 한 :
create or replace
trigger APPLICATION_UPDATE_TRG
BEFORE UPDATE ON TBL_APPLICATIONS
FOR EACH ROW
DECLARE
CURSOR curAppHistory IS
SELECT record_number, job_id, submitted_date, status_id, id
FROM tbl_application
WHERE id = :old.id;
vRowAppHistory curAppHistory%ROWTYPE;
BEGIN
OPEN curAppHistory;
FETCH curAppHistory INTO vRowAppHistory;
CLOSE curAppHistory;
INSERT INTO tbl_application_history
(record_number, job_id, submitted_date, status_id, application_id)
VALUES (vRowAppHistory.record_number, vRowAppHistory.job_id, vRowAppHistory.submitted_date,
vRowAppHistory.status_id, vRowAppHistory.id);
END;
그러나, 제대로 컴파일 아닙니다. SQL Developer는 명령이 제대로 종료되지 않고 명령문이 무시된다는 3 가지 오류를 발생시킵니다.
이 작업을 수행하는 올바른 방법은 무엇입니까?
편집 : 오류 :
Error(2,10): PLS-00341: declaration of cursor 'CURAPPHISTORY' is incomplete or malformed
Error(3,5): PL/SQL: SQL Statement ignored
Error(4,12): PL/SQL: ORA-00942: table or view does not exist
Error(6,18): PL/SQL: Item ignored
Error(9,3): PL/SQL: SQL Statement ignored
Error(9,28): PLS-00320: the declaration of the type of this expression is incomplete or malformed
Error(11,3): PL/SQL: SQL Statement ignored
Error(14,29): PLS-00320: the declaration of the type of this expression is incomplete or malformed
Error(14,44): PL/SQL: ORA-00984: column not allowed here
있습니다
가전체 트리거가이 경우에 하나의 삽입 문이 될 것입니다 너 사용하고있어? 예 : MySQL, Oracle, Microsoft – redolent
또한 오류의 일부를 게시 할 수 있습니까? – redolent
오라클 SQL과 오류를 사용하여 업데이트로 게시합니다. –