트리거 에러 질문 0 5 1,852

by cubrid [2015.02.02 18:13:03]


안녕하세요. 초보 DBA입니다. 오라클에서 트리거 문의 드립니다.

스키마 3개가 있습니다. A,B, 그리고 C

A계정에서 데이터가 생성되면 C로 보내는 트리거를 생성하였습니다.

그리고 똑같이 B에서 C로 보내는 트리거를 생성 하였습니다만 아래와 같이 에러가 납니다.

23 79 PL/SQL: ORA-00904: : invalid identifier   <--12번째 줄(38)의 ')' 에 해당합니다.
46 79 PL/SQL: ORA-00904: : invalid identifier   <--19번째 줄(45)의 ')' 에 해당합니다.

트리거는 완전히 똑같고 스키마만 A에서 B로 수정 하였습니다. (A스키마에선 에러 없으나 B에서만 에러납니다.)

제가 판단하기로는 모든 것이 다 똑같습니다.

어느 부분을 찾아 봐야 할가요? 혹은 다른 어떠한 환경적인 부분을 찾아야 할가요?

CREATE OR REPLACE TRIGGER B.abc
   AFTER DELETE OR INSERT OR UPDATE
   ON B.aaa

FOR EACH ROW
DECLARE
BEGIN
   IF DELETING
   THEN
      INSERT INTO C.bbb
                  (a,b,c
      )
           VALUES (:old.aa,:old.bb,:old.cc
    );
   ELSIF INSERTING
   THEN
      INSERT INTO C.bbb
                  (a,b,c
                  )
           VALUES (:new.aa,:new.bb,:new.cc
    );

   END IF;

END abc;
/

by 마농 [2015.02.02 19:24:46]

c.bbb 에 대한 갱신 권한을 b 에게 부여하셔야 합니다.


by cubrid [2015.02.02 20:01:59]

grant는 이미 주었습니다..


by jkson [2015.02.03 08:17:43]

grant까지 다 주어진 게 확실하나요? 한번 b에서 c로 직접 insert 해보세요. 혹시 테이블에 컬럼명들은 어떻게 되는지요?


by 마농 [2015.02.03 08:37:01]

에러메시지만 봐서는 권한 문제로 보입니다.
권한이 확실한지 다시 한번 확인해 보세요.
SELECT * FROM user_tab_privs;


by cubrid [2015.02.04 18:12:27]

grant는 다 주었습니다.

B에서 에러가 나서 도저히 에러를 찾다가 안되서

그대로 A에서 테이블과 트리거를 생성 하니 에러 없이 되었고 데이터도 넘어 갔습니다.

컬럼쪽은 문제가 아닌듯 하여 권한 문제라고 생각되는데..  다른 환경적인 부분으로 보입니다.

도저히 못찾고 있습니다. 다른 우회 방법을 찾아야 할가요?

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입