2011-09-21 4 views
0

예를 들어 테이블 employee에 대한 트리거가있는 경우. 테이블 부서에서 커서 루프를 만들고 싶습니다. 그런 다음 속성을 가져 와서 테이블 회사에 삽입하려고합니다. 테이블 부서를 찾을 수 없다는 런타임 오류가 발생하기 때문에 대답이 '아니오'라고 추측합니다. 그러나 동일한 효과를 얻는 방법이 있습니까?트리거가 만들어지지 않은 테이블에 커서를 포함하는 트리거를 만들 수 있습니까?

CREATE TRIGGER myTrigger AFTER INSERT 
ORDER 1 ON dba.employee 
REFERENCING NEW AS newRow 
FOR EACH ROW 
BEGIN 
    FOR myloop AS getIDCursor INSENSITIVE CURSOR FOR SELECT department_id FROM department 
    DO 
     INSERT INTO company (...) VALUES (...); 
    END FOR 
END 
+2

예, 가능하지만 사용하기 전에 커서를 선언해야합니다. 'begin' 바로 다음에 – Johan

+0

트리거가 여러 번 실행될 수 있으며 실행될 때 실제로 제어 할 수 없습니다. ** ** Cursor **를 방아쇠 안에 넣지 마십시오 **. 여기서 성능 문제를 묻는 것입니다 ..... –

답변

1

왜 SQL을 절차 언어처럼 사용하고 있습니까? 그냥 수행하십시오 :

INSERT INTO company SELECT department_id FROM department 

루프가 필요 없습니다.

관련 문제