우선 끄기는 특정 이벤트 (예 : 특정 테이블의 INSERT/UPDATE/DELETE)가 데이터베이스에서 발생할 때 실행되는 코드 조각입니다. 트리거는 암시 적으로 DML 문에서 BEFORE 또는 AFER로 실행되며 트리거는 저장 프로 시저처럼 명시 적으로 실행할 수 없습니다.
트리거에는 STATEMENT LEVEL 트리거와 ROW LEVEL 트리거의 두 가지 유형이 있습니다.
STATEMENT LEVEL 트리거는 명령문이 실행되기 전 또는 후에 발생합니다.
ROW LEVEL 트리거는 작업의 영향을받는 개별 행에서 BEFORE 또는 AFTER를 실행 한 후에 실행됩니다.
1. BEFORE INSERT STATEMENT
2. BEFORE INSERT ROW
3. AFTER INSERT STATEMENT
4. AFTER INSERT ROW
5. BEFORE UPDATE STATEMENT
6. BEFORE UPDATE ROW
7. AFTER UPDATE STATEMENT
8. AFTER UPDATE ROW
9. BEFORE DELETE STATEMENT
10. BEFORE DELETE ROW
11. AFTER DELETE STATEMENT
12. AFTER DELETE ROW
여러 트리거가 언급 한 실행의 우선 순위의 순서로 이벤트를 코딩 할 수 있습니다
그래서 우리는 트리거의 12 가지 유형이있다.
데이터베이스에서 DML 쿼리 (INSERT/UPDATE/DELETE)를 실행할 때마다 해당 쿼리가 트랜잭션에서 실행됩니다. 쿼리가 실행 따라서시 -
- 표는 문이
- 실제 SQL 문을 행 단위를 실행 실행하기 전에 실행 트리거에 대한
- DBMS의 검사를 잠겨 있습니다.
- 각 행에 대한 BEFORE 트리거가 검색됩니다. 발견되면 실행됩니다.
- 오류를 확인하십시오. 있는 경우 명령문 또는 트리거에 의해 변경된 내용을 롤백하십시오.
- AFTER EACH ROW 트리거가 발견되어 실행됩니다.
- 모든 AFTER STATEMENT 트리거가 발견되어 실행됩니다.
다른 DBMS는 트랜잭션을 다르게 관리합니다. 자세한 내용은 해당 설명서를 참조하십시오.
많은 DBMS는 컴파일 된 저장 프로 시저와 달리 텍스트 형식으로 만 트리거를 유지합니다.
저장 프로 시저가 트리거보다 훨씬 빠른 성능을 발휘하므로 트리거 본문 내부에서 저장 프로 시저를 호출하는 것이 가장 좋습니다.
나는 이것이 [dba.se]에 있어야한다고 생각합니다. ..; 그러나 나는 실제로 알지 못하기 때문에 그것을 계속 지켜 볼 것입니다. – Ben