KREAM 오마주 프로젝트 진행 중 회원정보의 프로필 이미지를 변경하면
변경전에 등록해둔 중고거래 게시글의 프로필 이미지가 변경되지 않는다
그래서 MEMBER테이블에 UPDATE발생시 TRADE테이블의 데이터가 함께 변경되도록 하는 기능이 필요해 TRIGGER를 알게 되었다
CREATE ORREPLACE TRIGGER 트리거명
[BEFORE | AFTER]
[FOR EACH ROW]
[WHEN (조건)]
DECLARE-- 변수선언
BEGIN
--SQL명령어 작성
--트리거 컴파일시 수행할 코드
EXCEPTION
END;
[행트리거]
트랜잭션 내의 각 행에 대해 한번만 수행(컬럼 각각의 행데이터가 변화가 생길때마다 실행, 각 컬럼의 데이터 값을 제어 가능하다)
[문장트리거]
트랜잭션내에서 한번만 수행되며 컬럼의 각 데이터행을 제어할 수 없다.
ALTER TRIGGER [트리거명] DISABLE;
ALTER TRIGGER [트리거명] ENABLE;
SELECT TABLE_NAME, STATUS FROM USER_TRIGGERS;
DROP TRIGGER [트리거명];
create table Testmember(
name varchar2(50) not null,
num number
);
insert into testmember values('채채',12,'남');
insert into testmember values('재재',23,'여');
commit;
create table newmember(
name1 varchar2(50) not null,
num1 number
);
commit;
CREATE OR REPLACE TRIGGER trigger_table
AFTER update or insert ON testmember
FOR EACH ROW
begin
if updating then
update newmember set num1=:new.num where name1=:old.name;
elsif inserting then
insert into newmember values(:new.name,:new.num);
end if;
end;
commit;
--여기서 ELSE IF => ELSIF로 사용
INSERT INTO TESTMEMBER VALUES('차차',13,'여');
update testmember set NUM = '38' where name='차차';