Oracle에서 트리거를 비활성화하는 방법

Oracleeseo Teuligeoleul Bihwalseonghwahaneun Bangbeob



데이터베이스 트리거 또는 간단히 트리거는 지정된 데이터베이스 개체 내에서 이벤트 활동에 대한 응답으로 실행되는 저장 프로시저를 나타냅니다.

이는 사용자의 명시적 호출이 필요한 표준 저장 프로시저와 다릅니다. 트리거는 자동화되어 있으므로 연결된 사용자 또는 서버 상태에 관계없이 지정된 이벤트가 발생할 때 트리거되거나 시작됩니다.







대부분의 관계형 데이터베이스는 유효하지 않은 트랜잭션 방지, 이벤트 로깅, 테이블 액세스 통계 가져오기 및 기록 등과 같은 자동화된 작업을 수행하기 위해 트리거 사용을 지원합니다.



트리거가 생성되면 연결된 이벤트가 발생할 때마다 항상 실행됩니다. 그러나 일시적으로 또는 영구적으로 트리거 실행을 방지할 수 있습니다. 트리거 비활성화 기능이 작동하는 곳입니다.



이 게시물에서는 Oracle 데이터베이스 내에서 트리거를 비활성화하는 빠르고 쉬운 단계에 대해 설명합니다. Oracle 트리거를 처음 사용하고 생성 방법을 알고 싶은 경우 다음 링크를 확인하십시오.





https://linuxhint.com/oracle-create-trigger

테스트 트리거 만들기

트리거를 비활성화하는 방법에 대해 논의하기 전에 데모 목적으로 샘플 트리거를 설정하겠습니다.



노트 : 이 섹션에서는 데이터베이스 트리거를 정의하거나 사용하는 방법을 다루지 않습니다.

삭제 작업 후 사용자 활동을 기록하는 트리거를 생성하려고 합니다. 예를 들어 다음과 같은 정보가 있는 sample_data 테이블이 있다고 가정합니다.

먼저 모든 삭제 활동에 대한 로그를 저장하는 테이블을 만들어야 합니다.

테이블 스키마는 다음과 같습니다.

sample_data_logs 테이블 생성(
ID 번호,
first_name varchar2(50),
ip_address varchar2(20),
btc_address varchar2(50),
credit_card varchar2(50),
식별자 varchar2(40),
delete_date 날짜,
삭제_by varchar2(20)
);

다음으로 삭제 이벤트 후에 실행되는 트리거를 정의해야 합니다. 트리거 정의는 다음과 같이 제공됩니다.

트리거 log_user 생성 또는 교체
삭제 후
sample_data에서
각 행에 대해
선언하다
action_username varchar2(20);
시작하다
dual에서 action_username으로 사용자를 선택합니다.
sample_data_logs에 삽입
값(:OLD.id,
:OLD.first_name,
:OLD.ip_address,
:OLD.btc_address,
:OLD.credit_card,
:OLD.식별자,
시스템 날짜,
action_username);
끝;

트리거를 테스트하기 위해 다음과 같이 sample_data 테이블에서 삭제 작업을 수행해 보겠습니다.

id = 1인 sample_data에서 삭제;

마지막으로 로그 테이블을 확인하여 삭제 작업이 기록되었는지 확인할 수 있습니다.

sample_data_logs에서 *를 선택하십시오.

산출:

보시다시피 테이블에는 삭제 활동을 수행한 사용자 이름과 삭제 시간뿐만 아니라 삭제 전 이전 데이터의 항목이 있습니다.

다음 섹션에서는 이전 트리거를 비활성화하는 방법을 보여줍니다. 그렇게 하기 전에 대상 트리거가 작동하고 활성화 또는 비활성화할 수 있는 충분한 권한이 있는지 확인하십시오.

PL/SQL을 사용하여 트리거 비활성화

트리거를 비활성화하는 첫 번째이자 가장 간단한 방법은 SQL 문을 사용하는 것입니다. 다행스럽게도 Oracle은 다음과 같은 구문을 제공하는 ALTER TRIGGER 문을 제공합니다.

ALTER TRIGGER trigger_name DISABLE;

예를 들어 이전에 생성한 log_user 트리거를 비활성화하려면 다음을 실행할 수 있습니다.

변경 트리거 log_user 비활성화;

트리거가 실행되면 다음과 같이 삭제를 수행한 사용자와 이전 데이터의 사본이 더 이상 보관되지 않습니다.

id = 2인 sample_data에서 삭제;

로그를 확인합니다.

sample_data_logs에서 *를 선택하십시오.

산출:

보시다시피, 우리는 여전히 하나의 레코드만 가지고 있습니다.

SQL Developer를 사용하여 트리거 비활성화

SQL Developer 유틸리티를 사용하여 그래픽 인터페이스에서 트리거를 비활성화할 수 있습니다. SQL Developer에 로그인하여 시작하십시오.

'트리거' 섹션으로 이동합니다.

트리거 디렉터리를 확장하고 비활성화하려는 트리거를 찾습니다. 트리거 이름을 마우스 오른쪽 버튼으로 클릭하고 '비활성화'를 선택합니다.

'비활성화' 작업을 확인하고 '적용'을 클릭합니다.

비활성화되면 Oracle은 트리거를 비활성화하여 비활성 상태임을 나타냅니다.

결론

이 기사에서는 PL/SQL 문과 SQL Developer 유틸리티를 사용하여 Oracle 트리거를 비활성화하는 방법을 살펴보았습니다.