[개념] 트리거(trigger)란?
단어 뜻 그대로 "방아쇠" 입니다.
예전에 톰과 제리란 만화 아시죠?
톰이 제리를 괴롭히기 위해서 치츠를 얹어놓고 줄로 연결하여 사실은 치즈를
짚으면 거대한 망치가 제리를 내려치도록 장치를 만들었습니다.
여기서 치즈에 연결된 장치를 "트리거"(방아쇠) 라고 생각하시면 됩니다.
즉 치즈를 집으므로 해서 방아쇠가 격발되어 이와 연계된 다른 것이 작동하는
것입니다.
테이블에서 어떤 특정한 변경이 있을때 그게 반응하여 다른 작업을 하도록
설치된 것이 트리거 입니다. (어떠한 action이 들어오면 어떠한 action을 해주겠다.)
A란 작업이 일어났을때 부수적으로 꼭 따라다니는 B란 작업이 있다면 별개로
따로따로 작업을 하는것보다 A작업이 일어났을때마다 자동으로 B란 작업이
일어나도록 트리거를 심어주는 것이 더 편리할 것입니다.
이런 것을 위해서 트리거가 있는 것입니다.
트리거는 톰과 제리에서 톰이 만든 복잡한 장치처럼... 한번만 걸릴수도 있지만
A의 변경으로 인해서 트리거작동 -> B의 변경 -> B에 걸린 또 다른 트리거에 의해서
-> C의 변경... 이런식으로 얽힐 수도 있습니다.
참고 하십시요.
[DB_oracle] 트리거(Trigger)
트리거는
특정 테이블이나 뷰에 대해 Update, Insert 또는 Delete문을 실행 할 때
자동으로 다른 테이블 혹은 뷰에 Update, Insert 또는 Delete문을 실행되는 특수한 루틴입니다.
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}
ps.
트리거를 더 자세히 알기 위해서는 PL/SQL을 따로 공부해야 겠다.
그리고 다시 한번 트리거에 대해서 정리 해야 겠다.
오늘 트리거에 대해서 알게 된 것은
어떤 특정 한 테이블에 insert가 일어나면 다른 계정의 테이블에도 연달아 insert 가 일어나도록
해주는 것이 트리거라고 느꼈다.
작성 언어는 PL/SQL이고 (조건)
그 조건 안에는 sql 문이 였다.
'DEV > DB' 카테고리의 다른 글
[sql] to_number()함수 (0) | 2009.03.24 |
---|---|
DB 스키마 (0) | 2009.03.09 |
[sql] 자주 사용하는 쿼리문 정리 (0) | 2009.03.02 |