트리거와 프로 시저 사이의 차이점을 아래 비교 차트를 사용하여 설명하겠습니다.
비교 차트
비교의 근거 | 방아쇠 | 절차 |
---|---|---|
기본 | 지정된 이벤트가 발생할 때 자동으로 실행됩니다. | 필요할 때마다 실행할 수 있습니다. |
부름 | 트리거는 프로 시저 내에서 호출 될 수 없습니다. | 그러나 트리거 내부에서 프로 시저를 호출 할 수 있습니다. |
매개 변수 | 트리거에 매개 변수를 전달할 수 없습니다. | 프로 시저에 매개 변수를 전달할 수 있습니다. |
반환 | 트리거는 실행시 값을 반환하지 않습니다. | 프로 시저가 실행시 value를 반환 할 수 있습니다. |
방아쇠의 정의
트리거는 지정된 이벤트 발생시 자동으로 실행되는 프로 시저와 같습니다. 프로 시저와 마찬가지로 트리거를 명시 적으로 호출 할 필요가 없습니다. 트리거가 작성되어 특정 이벤트 발생에 대한 응답으로 일부 태스크를 수행합니다.
트리거는 DDL 문 (DELETE, INSERT 또는 UPDATE) 또는 DML 문 (DELETE, INSERT 또는 UPDATE) 또는 일부 데이터베이스 작업 (SERVERERROR, LOGON, LOGOFF, STARTUP 또는 SHUTDOWN)에 대한 응답으로 호출 할 수 있습니다.
트리거는 아래에서 설명하는 세 가지 구성 요소로 구성됩니다.
- 이벤트 : 이벤트는 트리거 실행을 유발할 사건의 발생입니다. 트리거는 이벤트가 발생하기 전에 실행되도록 명령되거나 이벤트 실행 후 실행되도록 명령 될 수 있습니다.
- 조건 : 트리거의 선택적 부분입니다. 언급되지 않은 경우 지정된 이벤트가 발생할 때 트리거가 실행됩니다. 조건이 지정되면 트리거를 실행할지 여부를 결정하기 위해 규칙을 검사합니다.
- 액션 : 액션은 트리거 실행시 실행할 SQL 문입니다.
이벤트 생성의 일반적인 형식은 아래에서 설명합니다.
조건 동작 전 / 후에 트리거 생성;
여기서 조건은 선택 사항입니다.
절차의 정의
이 절차는 프로그램 단위로 취해서 일부 작업을 수행하기 위해 작성되며 데이터베이스에 저장됩니다. 필요할 때마다 SQL.에 의해 호출됩니다. 프로 시저는 개발자가 정의한 사용자 정의 함수와 같습니다. 프로시 저는 CALL 또는 EXECUTE를 사용하여 호출 할 수 있습니다.
이 절차는 다음 상황에서 유용합니다.
- 프로 시저가 여러 다른 응용 프로그램에서 필요하면 다른 응용 프로그램에서 프로 시저를 호출 할 수 있도록 서버에 저장할 수 있습니다. 한 데이터베이스에서 다른 데이터베이스로 프로 시저를 복제하는 노력을 줄이고 소프트웨어의 모듈성을 향상시킵니다.
- 프로 시저가 서버에서 실행되면 데이터 전송이 줄어들고 통신 비용이 절감됩니다.
- 이 절차는 트리거의 힘을 넘어서는 복잡한 제약 조건을 확인하는 데 사용할 수 있습니다.
프로 시저를 만드는 일반적인 형식에 대해 논의 해 보겠습니다.
CREATE PROCEDURE () RETURNS;
여기서 매개 변수와 로컬 선언은 선택 사항입니다. 그들은 필요할 때만 언급됩니다. 아래의 진술은 절차의 소집을 설명합니다.
CALL ();
트리거와 프로 시저 간의 주요 차이점
- 트리거와 프로 시저의 주된 차이점은 트리거가 이벤트가 발생할 때 자동으로 호출되는 명령문입니다. 반면에 프로 시저가 필요할 때마다 호출됩니다.
- 트리거 내부에서 프로 시저를 정의 할 수 있습니다. 그러나 트리거는 이벤트 발생시 자동으로 호출되어야하므로 프로 시저 내에서 결코 정의되지 않습니다.
- 우리는 프로 시저에 매개 변수를 전달할 수 있지만 우리가 호출하지 않는 매개 변수는 전달할 수 없습니다.
- 프로 시저는 매개 변수 값이나 코드를 반환 할 수 있지만 트리거는 수행 할 수 없습니다.
결론:
트리거는 유용하지만 데이터 복잡성을 증가시키기 때문에 트리거가 유용 할 경우에는 피할 수 있습니다. 때때로 트리거는 적절한 절차에 의한 대용품이기도합니다.