▣ 트리거(TRIGGER), 주장(ASSERTION)
1. 트리거(TRIGGER)
특정 릴레이션에 변경이 생길 경우 해당 이벤트 전/후에 특정 조건에 따라 조치 수행
(Event - Condition – Action)
명시된 사건(Event) 발생할 경우에만 수행(INSERT, UPDATE, DELETE 등)하며 조건을 확인하고 조건 충족 시,
전(BEFORE)이나 후(AFTER)에 조치 수행
[예시]
CREATE TRIGGER salary_check
BEFORE INSERT OR UPDATE OF salary, job_id ON employees
FOR EACH ROW
WHEN (new.job_id <> 'AD_VP')
CALL check_sal(:new.job_id, :new.salary, :new.last_name)
2. 주장(ASSERTION)
릴레이션에 변경이 발생 시 항상 참(TRUE)가 되는 조건식을 정의한다.
조건식은 일반적으로 진단화 연산( EXIST, Not EXIST)를 사용한다.
Create assertion [Name] check [Condition]
조건(condition) : 조건은 항상 참(TRUE)이 되어야 함
[예시]
CREATE ASSERTION Salary_limit
CHECK
( NOT EXISTS
( SELECT *
FROM EMP
WHERE SAL > 5000
)
);
=> 사원(EMP)에 급여(SAL)가 5,000을 넘지 않도록 하는 Assertion 생성
2018년 58번
58. 트리거(trigger)와 주장(assertion)에 대한 일반적인 설명 중 가장 적절하지 않은 것은?
① 트리거는 명시된 이벤트가 발생할 때마다 DBMS가 자동적으로 수행하는 프로시저로 사용자가 정의한다.
② 트리거는 주장보다 더 비절차적이다.
③ 주장은 트리거보다 더 일반적인 무결성 제약조건이다.
④ 도메인 제약조건과 참조무결성 제약조건은 주장의 특별한 유형이다.
정답 : 2번
트리거는 특정사건(삽입, 삭제, 갱신) 전(BEFORE)이나 후(AFTER)에 특정 SQL을 실행하거나
프로시저를 호출할 수 있으므로, 주장에 비해 더 절차적이라 할 수 있음.
2012년 52번
정답 : 1번
인덱스 : 검색연산의 최적화를 위해 탐색 키 값과 레코드에 대한 포인터로 구성된 데이터 구조로서 데이터베이스 내의 데이터를 신속하게 정렬하고 탐색
트리거 : DB에 저장된 모든 데이터는 업무규칙을 준수해야 하는 특성인 사용자 정의 무결성을 확보하는데 활용
메타데이터 : 저장되어 있는 데이터는 "데이터에 관한 데이터", 즉, 데이터베이스 자신을 기술하는(Self-describing)데이터
2014년 63번
정답 : 2번
SP(Stored Procedure)는 DBMS 내부에 위치하므로 사용자 계정별 접근 권한 제어가 용이함
질의문에 대한 매개변수만 입력받아 수행하므로 질의문 파싱, 전처리 속도가 향상됨
SQL 조작등으로 인한 공격 가능성을 낮출수 있으므로 AdHoc 쿼리와 비교하여 보안이 좋음
다수 개의 T-SQL 문장들을 조합하여 모듈화할 수 있기 때문에 복잡한 응용업무를 편리하게 처리할 수 있음
저장 프로시저 내부에 동작으로 발생하는 값들에 대해 임시로 저장, 참조할 수 있도록 변수기능을 지원하여 동적으로 입력데이터를 가공할 수 있음
저장프로시저 모듈에 입출력 데이터를 지정할 수 있음. 이로 인해 특정값을 기준으로 저장 프로시저를 실행할 수 있으며 저장 프로시저가 SELECT 결과 이외에 다양한 연산 결과를 출력할 수 있게함