기금넷 공식사이트 - 금 선물 - Oracle 트리거 반복

Oracle 트리거 반복

트리거를 도입합니다

Trigger 는 특정 테이블의 데이터를 삽입, 삭제 또는 수정할 때 실행을 트리거하는 특수 저장 프로시저입니다. 데이터베이스 자체의 표준 기능보다 더 정교하고 복잡한 데이터 제어 기능을 갖추고 있습니다. 데이터베이스 트리거에는 다음과 같은 기능이 있습니다.

* 보안. 데이터베이스의 가치에 따라 사용자에게 데이터베이스를 조작할 수 있는 권한을 부여할 수 있습니다.

# 시간을 기준으로 사용자의 작업을 제한할 수 있습니다. 예를 들어 퇴근 및 공휴일 후 데이터베이스 데이터를 수정할 수 없습니다.

# 데이터베이스의 데이터를 기준으로 사용자의 작업을 제한할 수 있습니다. 예를 들어 주가를 10% 이상 한 번에 올릴 수 없습니다.

* 감사. 데이터베이스에 대한 사용자 작업을 추적할 수 있습니다.

# 데이터베이스를 운영하는 사용자의 명령문을 감사합니다.

# 데이터베이스에 대한 사용자 업데이트를 감사 테이블에 기록합니다.

* 복잡한 데이터 무결성 규칙을 구현합니다.

# 비표준 데이터 무결성 검사 및 제약 조건 구현 트리거는 규칙보다 더 복잡한 제한을 만들 수 있습니다. 규칙과 달리 트리거는 열 또는 데이터베이스 객체를 참조할 수 있습니다. 예를 들어, 트리거는 자신의 보증금을 초과하는 모든 선물을 회수할 수 있다.

# 가변 기본값을 제공합니다.

* 복잡한 비표준 데이터베이스 관련 무결성 규칙을 구현합니다. 트리거는 데이터베이스의 관련 테이블을 체인으로 갱신할 수 있습니다. 예를 들어 Authors 테이블의 author_code 열에 있는 delete 트리거로 인해 다른 테이블의 일치하는 행이 적절하게 삭제됩니다.

# 수정 또는 삭제 시 계단식 수정 또는 다른 테이블에서 일치하는 행 삭제.

# 수정 또는 삭제 시 다른 테이블의 일치하는 행을 null 값으로 설정합니다.

# 수정 또는 삭제 시 다른 테이블의 일치하는 행 계단식 작성을 기본값으로 설정합니다.

# 트리거는 종속성 무결성을 훼손하는 변경 사항을 거부하거나 롤백하고 데이터 업데이트를 시도하는 트랜잭션을 취소할 수 있습니다. 이 트리거는 기본 키와 일치하지 않는 외부 키를 삽입할 때 작동합니다. 예를 들어, 새 값이 authors 의 값과 일치하지 않을 경우 books.author_code 열에 삽입 트리거를 생성할 수 있습니다. Author _ code 열에서 삽입이 롤백됩니다.

* 테이블의 데이터를 실시간으로 동기화 및 복제합니다.

* 데이터 값을 자동으로 계산하고, 데이터 값이 특정 요구 사항을 충족하는 경우 특정 처리를 수행합니다. 예를 들어, 회사 계좌의 자금이 5 만 원 미만이면 즉시 재무 담당자에게 경보 데이터를 보냅니다.

ORACLE 및 SYBASE 데이터베이스에 대한 트리거는 약간 다릅니다. 다음은 두 데이터베이스 트리거의 기능과 작성 방법에 대해 설명합니다.

두 개의 ORACLE 트리거

ORACLE 에서 데이터베이스 트리거를 생성하는 구문은 다음과 같습니다.

[또는 대체] 트리거 트리거 이름 트리거 시간 트리거 이벤트를 생성합니다.

테이블 이름 정보

[행당]

Pl/sql 문

여기에는 다음이 포함됩니다.

트리거 이름: 트리거 객체의 이름입니다. 트리거가 데이터베이스에 의해 자동으로 실행되기 때문에 이름은 단지 이름일 뿐 실질적인 용도는 없습니다.

트리거 시간: 트리거가 실행되는 시기를 나타냅니다. 이 값은 허용됩니다.

Before-데이터베이스 작업 전에 트리거가 실행됨을 나타냅니다.

After-데이터베이스 작업 후 시작프로그램이 실행됨을 나타냅니다.

이벤트 트리거: 이 트리거를 트리거할 데이터베이스 작업을 나타냅니다.

삽입: 데이터베이스 삽입은 트리거를 트리거합니다.

업데이트: 데이터베이스 수정으로 트리거가 트리거됩니다.

삭제: 데이터베이스 삭제는 이 트리거를 트리거합니다.

테이블명: 데이터베이스 트리거가 있는 테이블입니다.

행당: 테이블의 행당 한 번 트리거합니다. 이 옵션이 없으면 전체 테이블에 대해 한 번만 실행됩니다.

예: 테이블 auths 가 갱신되기 전에 다음 트리거가 트리거되어 주말에 테이블 수정이 허용되지 않습니다.

트리거 인증 _ 보안 생성

Insert 또는 update 또는 delete 이전에//전체 테이블이 업데이트되기 전에 트리거됩니다.

권한 부여 정보

시작

If(to_char(sysdate,' DY')='SUN'

RAISE_APPLICATION_ERROR(-20600,' 주말에는 테이블 auths 를 수정할 수 없습니다

끝 if;

삼항 데이터베이스 트리거

SYBASE 데이터베이스 트리거의 기능은 ORACLE 과 매우 유사하며 약간의 차이만 있습니다.

사이베이스가 트리거를 생성하는 구문은 다음과 같습니다.

트리거 트리거명 생성

테이블 이름 정보

삽입, 업데이트, 삭제에 사용됩니다

마찬가지로

SQL _ 문 |

삽입의 경우 업데이트

마찬가지로

If update (column _ name) [and | or update (column _ name)] ...

SQL _ 문

위의 FOR 절은 트리거를 활성화할 수 있는 트리거의 데이터 갱신 명령을 지정하는 데 사용됩니다. IF UPDATE 절은 지정된 열의 작업 유형을 확인하고 IF UPDATE 절에 여러 열을 지정할 수 있습니다.

ORACLE 과 달리 트리거는 각 SQL 문에 대해 한 번만 실행됩니다. 트리거는 데이터 업데이트 문이 완료된 직후에 실행됩니다. 트리거와 이를 시작하는 문은 트리거에서 롤백할 수 있는 트랜잭션으로 간주됩니다.

다음 예에서는 SYBASE 트리거 작성을 보여 줍니다.

Insert_books 에 대한 트리거 생성

책에서

삽입에 사용

마찬가지로

If(select count(*) from auths, inserted

여기서 auths.author _ code = insert.author _ code! =@@rowcount

시작

트랜잭션을 롤백합니다

"books 테이블의 author_code 열 값이 authors 테이블에 없습니다."