CREATE TRIGGER trigger_name 
timing[BEFORE|AFTER] event[INSERT|UPDATE|DELETE]
ON table_name
[FOR EACH ROW]
[WHEN conditions]
BEGIN 
statement
END
------ Trigger : 자동실행되는 procedure 이다.
create table emp08 
as 
select employee_id,first_name , job_id
from employees 
where 1=0;

desc emp08;
select * from emp08;

create or replace trigger trigger_01
after insert on emp08 
begin 
    dbms_output.put_line('-------------------------신입사원이 들어옴');
end;
/

create table emp08_backup(
empid number ,
salary number ,
hire_date date
)
create or replace  trigger trigger_02
after insert on emp08
for each row
begin
    insert into emp08_backup values(:new.employee_id,100,sysdate);
end;
/

insert into emp08 values (2,'신한2','IT');
insert into emp08 values (3,'신한4','IT');

delete from emp08 where employee_id=2;

select * from emp08_backup;
select * from emp08;


create or replace  trigger trigger_03
before delete on emp08
for each row
begin
    delete from emp08_backup where empid = :old.employee_id;
end;
/


CREATE TABLE 상품(
상품코드 CHAR(6) PRIMARY KEY,
상품명 VARCHAR2(12) NOT NULL,
제조사 VARCHAR(12),
소비자가격 NUMBER(8),
재고수량 NUMBER DEFAULT 0
);

CREATE TABLE 입고(
입고번호 NUMBER(6) PRIMARY KEY,
상품코드 CHAR(6) REFERENCES 상품(상품코드),
입고일자 DATE DEFAULT SYSDATE,
입고수량 NUMBER(6),
입고단가 NUMBER(8),
입고금액 NUMBER(8)
);

INSERT INTO 상품(상품코드, 상품명, 제조사, 소비자가격)
VALUES('A00001','세탁기', 'LG', 500); 
INSERT INTO 상품(상품코드, 상품명, 제조사, 소비자가격)
VALUES('A00002','컴퓨터', 'LG', 700);
INSERT INTO 상품(상품코드, 상품명, 제조사, 소비자가격)
VALUES('A00003','냉장고', '삼성', 600);
commit;

-- 입고 트리거
CREATE OR REPLACE TRIGGER TRG_04
AFTER INSERT ON 입고
FOR EACH ROW
BEGIN
UPDATE 상품
SET 재고수량 = 재고수량 + :NEW.입고수량
WHERE 상품코드 = :NEW.상품코드;
END;

INSERT INTO 입고(입고번호, 상품코드, 입고수량, 입고단가, 입고금액) 
VALUES(1, 'A00001', 5, 320, 1600);
INSERT INTO 입고(입고번호, 상품코드, 입고수량, 입고단가, 입고금액) 
VALUES(2, 'A00001', 20, 320, 1600);


SELECT * FROM 입고;
SELECT * FROM 상품;

UPDATE EMPLOYEES SET JOB_ID = 'MK_MAN'
WHERE EMPLOYEE_ID =206;

'DB' 카테고리의 다른 글

Mybatis  (0) 2024.12.02
Spring <-> Oracle 연동방법  (0) 2024.11.29
저장 프로시저  (0) 2024.10.28
인덱스(INDEX)  (0) 2024.10.25
Sequence(오라클)  (0) 2024.10.25

+ Recent posts