728x90
안녕하세요. TRIGGER를 활용해서
테이블에서 DELETE시, 별도의 TABLE 에 알아서 백업해주는 코드입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
--ABCD 테이블 생성
create TABLE ABCD (id number,name nvarchar2(5));
insert into ABCD values(1,'유재석');
insert into ABCD values(2,'박명수');
insert into ABCD values(3,'하동훈');
--ABCD_DEL_LIST 테이블 생성(ABCD에서 삭제한 데이터를 백업할 테이블)
--where 1 = 0을 활용하여 column이름만 가져왔습니다.
create TABLE ABCD_DEL_LIST
as
select * from ABCD
where 1 = 0;
--trigger를 만들어줍니다.
--delete후에 실행되게 만들었습니다.
--주의할점은 그냥 명령문 실행(CTRL+ENTER)할 경우 OLD 를 변수?로 인식해 오류가 납니다.
--따라서, 스크립트 실행(F5)로 트리거를 생성합니다.
create or replace trigger trig_abcd
after delete
on ABCD
for each row
begin
DBMS_OUTPUT.PUT_LINE('Trigger 작동, 백업완료');
insert into ABCD_DEL_LIST values(:OLD.ID, :OLD.NAME);
end
;
--ID가 2인 것을 DELETE하는 것으로 TRIGGER가 정상 작동하는 것을 확인했습니다.
delete from abcd where id = '2';
select * from ABCD_DEL_LIST;
|
cs |
'ORACLE SQL' 카테고리의 다른 글
[ORACLE] SQL 반복문 - FOR문, WHILE문[ORACLE] SQL 반복문 - FOR문, WHILE문 (0) | 2021.03.21 |
---|---|
[ORACLE] SQL -- if문 예시 (0) | 2021.03.21 |
[ORACLE] SQL - TYPE의 is record 활용하기 (0) | 2021.03.21 |
[Oracle] SQL문 - TYPE과 FOR문 활용 예시 (0) | 2021.03.21 |
[ORACLE] SQL - TYPE변수 생성해서 사용하기 (0) | 2021.03.20 |