트리거 예제

Posted by abitou on Αυγ 02, 2019

트리거 및 구현은 데이터베이스 공급업체에 만해당합니다. 이 문서에서는 Microsoft SQL 서버에 중점을 둡니다. 그러나 개념은 오라클과 MySQL에서 동일하거나 유사합니다. 트리거에서 결과를 반환하는 기능은 SQL Server의 이후 버전에서 제거됩니다. 결과 집합을 반환하는 트리거는 작업하도록 설계되지 않은 응용 프로그램에서 예기치 않은 동작을 일으킬 수 있습니다. 새 개발 작업의 트리거에서 결과 집합을 반환하지 않도록 하고 현재 수행하는 응용 프로그램을 수정할 계획입니다. 트리거가 결과 집합을 반환하지 않도록 하려면 트리거 옵션에서 허용 되지 않는 결과를 1로 설정합니다. 반대로 트리거는 CREATE TRIGGER 문을 입력할 때 완전히 컴파일되고 pcode가 데이터 사전에 저장됩니다. 따라서 트리거를 발생 시 더 이상 트리거 작업을 실행 하기 위해 공유 커서의 열 필요가 없습니다.

대신 트리거가 직접 실행됩니다. 예를 들어 중첩된 직원 테이블이 포함된 부서 보기를 생각해 보십시오. 트리거는 다른 함수 또는 패키지에 따라 달라질 수 있습니다. 트리거에 지정된 함수 또는 패키지가 삭제되면 트리거가 유효하지 않은 것으로 표시됩니다. 이벤트 발생 시 트리거의 유효성을 검사하기 위해 시도합니다. 트리거의 유효성을 성공적으로 확인할 수 없는 경우 오류와 함께 유효한 것으로 표시되고 이벤트가 실패합니다. 다음 예제에서는 각 행에 대 한 Emp_tab 테이블에 대 한 수정 을 감사 하는 트리거를 보여 줍니다. 업데이트 하기 전에 전역 패키지 변수에 «이유 코드»를 저장 해야 합니다.

이는 값 기반 감사를 제공하기 위해 트리거를 사용하는 방법과 공용 패키지 변수를 사용하는 방법을 보여 주며, 이를 통해 알 수 있습니다. DML 트리거는 삭제되고 삽입된 논리(개념적) 테이블을 사용합니다. 트리거가 정의된 테이블, 즉 사용자 작업이 시도되는 테이블과 구조적으로 유사합니다. 삭제되고 삽입된 테이블에는 사용자 작업으로 변경될 수 있는 행의 이전 값 또는 새 값이 유지됩니다. 예를 들어 삭제된 테이블의 모든 값을 검색하려면 트리거 내부의 악성 코드가 에스컬레이션된 권한으로 실행될 수 있습니다. 이 위협을 완화하는 방법에 대한 자세한 내용은 트리거 보안 관리를 참조하십시오. 컴파일된 트리거에는 종속성이 있습니다. 트리거 본문에서 호출된 저장 프로시저 또는 함수와 같은 종속 개체가 수정되면 유효하지 않습니다.

Comments are closed.

Ο καιρός

ar8ra

advertisement