트리거는 입력,수정,삭제시의 레코드 단위로 이벤트가 발생합니다.
데이터를 입력하면 바로 트리거에 관련된 테이블에 영향을 미치게 되는 거지요...
님처럼 작성하시면 레코드 한번 입력시 마다 emp 테이블에 있는 데이터를 모두다 읽어다가 dept 테이블에 저장하게 되는겁니다.
(배치 업무성 작업을 하실때에는 스토어드 프로시저를 작성하시는게 나을듯 합니다.)
트리거는 하나의 레코드 단위를 처리하는 것처럼 설계하고 구현하는게 가장 좋을듯 합니다.
아래 예제를 보내드립니다.
create or replace trigger emp_trigger
AFTER INSERT OR UPDATE OR DELETE
for each row
BEGIN
IF INSERTING THEN
INSERT INTO dept(deptno,dname)
VALUES (:new.empno,
:new.empname);
ELSIF UPDATING THEN
update dept set
dname=:new.enpname
where deptno=:new.empno;
ELSIF DELETING THEN
delete from dept
where deptno=:new.empno;
END IF;
END;
-- 민이 님이 쓰신 글:
>> table emp :
>> empno, empname, SAL
>> table dept :
>> deptno,deptname
>> 이렇게 테이블이 두개가 있습니다.
>>
>> 여기서 저는emp 테이블에서 empno,empname만 select하여 table dept라는 곳에 각각 deptno,deptname에 넣고 싶습니다..
>> 근데..넘 어려워여 ㅜㅜ
>>
>> create or replace trigger emp_trigger
>> after
>> insert on emp
>> for each row
>>
>> declare @empno int; @empname varchar(10);
>> begin
>> select empno,empname
>> into @empno,@empname from emp
>> insert into dept(deptno,dname) values(@empno,@empname)
>> end;
>> /
>> 로 만들었는데..안되네요....트리거표시가 X로 나와고 insert되어도 dept로 값이 안넘어가네여 좀 도와주세요..
|