프로시저 안에서 트리거 생성 0 4 1,508

by 모델장윤주 [2017.01.31 09:50:52]


CREATE OR REPLACE PROCEDURE PR_NAME IS

CURSOR NAME_LIST IS

SELECT NAME FROM TEST_TABLE WHERE~~~;

 

BEGIN

FOR V_NAME IN NAME_LIST

LOOP

CREATE OR REPLACE TRIGGER TR_NAME

~~~~~

END LOOP;

END;

 

테이블 이름들을 가져와 하나씩 LOOP를 돌리면서 트리거를 만들력도 하는데

트리거 생성시에 에러가 발생합니다.

'CREATE' 단어가 예약어로 쓸 수 없다고 발생하여 뜨는 에러인 것 같은데,

프로시저안에서 트리거를 생성할 수는 없나요 ?? 

by jkson [2017.01.31 10:14:40]

프로시저 안에서 DDL을 바로 실행하실 수 없어요. 굳이 사용하시려면

execute immediate '내용';

이런 식으로 실행하셔야 하는데 트리거를 왜 프로시저에서 생성하시려는 것인지요?


by 모델장윤주 [2017.01.31 10:22:08]

답변 감사합니다.

 

서로 다른 테이블의 같은 컬럼 insert, update를 위해서 트리거를 생성하려고 하는데 

다른 테이블명마다 트리거를 개별적으로 다 지정해주려고 하니 손이 많이 갈 것 같아서

생각해본 방법입니다.

단순하게 생각해서 table_name 가져오면서 loop로 돌리고 그 table_name으로 트리거를 생성해주면 되겠다.

라고 생각했었거든요...;


by jkson [2017.01.31 10:30:57]

운영중인 서버에서 살짝 위험할 것 같은데 많은 검토를 하셔야겠네요.


by 모델장윤주 [2017.01.31 10:38:27]

답변 감사합니다.

다행스럽게도 운영중인 서버는 아니라서..ㅎㅎ

참고해서 작업해보고 어렵다면 개별적으로 트리거를 다 만들어야겠네요.

감사합니다.

 

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