이 문서는 지원되지 않는 버전의 스포츠 토토 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다와이즈 토토 : 문서 : 17 : 37 장. 트리거버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

제 20 장. 트리거

스포츠 토토다양한 것이 있습니다 서버 측 기능 인터페이스. 서버 측 기능 일 수 있습니다 SQL, PLPGSQL, TCL 또는 C로 작성된 트리거 기능은 다음과 같습니다. SQL을 제외한 이러한 언어로 작성되었습니다. 주목하십시오 명령문 수준 트리거 이벤트는 현재에서 지원되지 않습니다 버전. 현재 삽입 전후에 지정할 수 있습니다. 트리거 이벤트로 튜플 삭제 또는 업데이트.

20.1. 트리거 생성

트리거 이벤트가 발생하면 트리거 관리자 ( 집행자)는 TriggerData 정보 구조를 설정합니다 (아래 설명) 및 트리거 기능을 호출하여 처리합니다. 이벤트.

트리거 함수는 트리거가 인수를 취하지 않고 불투명 한 반환 기능으로 생성됩니다. 함수가 C로 작성된 경우를 사용해야합니다."버전 1"기능 관리자 인터페이스.

트리거 생성을위한 구문은 다음과 같습니다.

트리거 만들기트리거[전 | 후] [삽입 | 삭제 | 업데이트 [또는 ...]]
    에관계각각의 경우 [행 | 성명 ]
    절차 실행절차(args);

인수가있는 곳 :

트리거

트리거 이름이 필요한 경우 사용됩니다. 트리거를 삭제하십시오. 그것은에 대한 논쟁으로 사용됩니다.드롭 트리거명령.


이후

함수가 이전 또는 이전에 호출되는지 여부를 결정합니다 이벤트 후.

삽입
삭제
업데이트

명령의 다음 요소는 무엇을 결정합니다 이벤트는 기능을 트리거합니다. 여러 이벤트가 가능합니다 OR에 의해 분리되어 지정됩니다.

관계

관계 이름은 이벤트의 테이블을 결정합니다 적용.

Row
진술

각 조항의 경우 트리거가 있는지 여부가 결정됩니다 영향을받는 각 행에 대해 또는 전 (또는 그 이후)에 해고 전체 진술이 완료되었습니다.

절차

절차 이름은 호출 된 함수입니다.

args

인수는 그 기능으로 전달되었습니다 트리거 데이터 구조. 논쟁을 통과하는 목적 기능은 다른 트리거를 허용하는 것입니다 동일한 기능을 호출하는 유사한 요구 사항.

또한절차다른 관계를 유발하는 데 사용됩니다 (이 기능 로 명명되었습니다.일반 트리거 기능).

위의 두 기능을 모두 사용하는 예로서, 그럴 수 있습니다 인수 2로 취하는 일반적인 기능이 되십시오. 필드 이름을 지정하고 현재 사용자를 하나로 묶습니다. 다른 타임 스탬프. 이것은 트리거를 허용합니다 자동으로 추적하려면 삽입 이벤트에 작성하십시오 예를 들어 트랜잭션 테이블에서 레코드 생성. 그것은 또한로 사용될 수 있습니다."마지막 업데이트 된 "업데이트 이벤트에 사용되는 경우 기능.

트리거 함수는 호출 집행자에게 heptuple을 반환합니다. 이것은 인서트, 삭제 또는 업데이트 작업이지만 트리거 이전에는 다음을 수행 할 수 있습니다.

  • return null을 반환하여 현재 튜플 작업을 건너 뜁니다. (따라서 튜플은 그렇지 않을 것입니다 삽입/업데이트/삭제).

  • 다른 튜플에 포인터를 반환합니다 (삽입 및 업데이트 삽입 될 (새로운 버전의 원래 튜플 대신 업데이트 IF 업데이트) 업데이트.

생성에 의해 수행 된 초기화가 없음에 유의하십시오. 트리거 핸들러. 이것은 앞으로 변경 될 것입니다. 또한 IF 동일한 이벤트에 대해 둘 이상의 트리거가 정의됩니다. 관계, 방아쇠 발사 순서는 예측할 수 없습니다. 이것 미래에 변경 될 수 있습니다.

트리거 함수가 SQL-Queries (SPI 사용)를 실행하는 경우 이 쿼리는 다시 트리거를 발사 할 수 있습니다. 이것은 알려져 있습니다 계단식 트리거. 에 대한 명시 적 제한은 없습니다 캐스케이드 수준의 수.

삽입하여 트리거가 발사되고 새 튜플을 삽입하는 경우 동일한 관계는이 트리거가 다시 발사됩니다. 현재 동기화 (etc)에 제공되는 것은 없습니다. 이 경우에도 변경 될 수 있습니다. 현재, 그 순간이 있습니다 기능을 사용하는 회귀 테스트에서 funny_dup17 () 함수 재귀를 멈추는 기술 (계단식) 자체 ...