이 문서는 지원되지 않는 버전의 스포츠 토토 결과을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : F.39. SPI - 서버 프로그래밍 인터페이스 젠 토토/예제버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.36. SPI

theSPI모듈은 사용의 몇 가지 실행 가능한 예를 제공합니다.토토 꽁 머니 PostgreSQL:(SPI) 및 트리거. 이러한 기능은 그 자체로 어떤 가치가 있지만, 그들은 자신의 목적을 위해 수정하는 예로 더 유용합니다. 기능은 모든 스포츠 토토 결과과 함께 사용하기에 충분히 일반적이지만 트리거를 생성하는 동안 스포츠 토토 결과 및 필드 이름 (아래 설명대로)을 지정해야합니다..

아래에 설명 된 각 기능 그룹은 별도로 설치 가능한 확장으로 제공됩니다.

F.36.1. 리핀 - 참조 무결성 구현 기능

check_primary_key ()andcheck_foreign_key ()는 외국의 주요 제약 조건을 확인하는 데 사용됩니다. (이 기능은 물론 내장 된 외국 키 메커니즘에 의해 대체 된 지 오래되었지만 모듈은 여전히 ​​예제로 유용합니다.)

check_primary_key ()참조 스포츠 토토 결과을 확인합니다. 사용하려면 A 생성삽입 또는 업데이트 전다른 스포츠 토토 결과을 참조하는 스포츠 토토 결과 에서이 함수를 사용하는 트리거. 트리거 인수로 지정하십시오 : 참조 스포츠 토토 결과의 열 이름을 기본/고유 키를 형성하는 참조 스포츠 토토 결과의 외래 키, 참조 스포츠 토토 결과 이름 및 열 이름을 형성하는 참조 스포츠 토토 결과 이름. 여러 개의 외국 키를 처리하려면 각 참조에 대한 트리거를 만듭니다.

check_foreign_key ()참조 스포츠 토토 결과을 확인합니다. 사용하려면 A 생성삭제 또는 업데이트 전다른 스포츠 토토 결과에서 참조 된 스포츠 토토 결과 에서이 함수를 사용한 트리거. 트리거 인수로 지정 : 함수가 확인 해야하는 참조 스포츠 토토 결과 수, 참조 키가 발견되는 경우 조치 (.캐스케이드- 참조 행을 삭제하려면제한- 참조 키가 존재하는 경우 거래 중단,setNull- 참조 키 필드를 NULL로 설정하려면 기본/고유 키를 형성하는 트리거 된 스포츠 토토 결과의 열 이름, 참조 스포츠 토토 결과 이름 및 열 이름 (첫 번째 인수로 지정된 많은 참조 스포츠 토토 결과에 대해 반복). 기본/고유 키 열에는 NULL이 아니며 고유 한 인덱스가 있어야합니다.

예제가 있습니다Refint.example.

F.36.2. TimeTravel - 시간 여행 구현 기능

오래 전,스포츠 토토 결과각 튜플의 삽입 및 삭제 시간을 유지하는 내장 시간 여행 기능이 있습니다. 이것은 이러한 기능을 사용하여 모방 할 수 있습니다. 이 기능을 사용하려면의 두 열에 추가해야합니다.Abstime튜플이 삽입 된 날짜 (start_date) 및 변경/삭제 (stop_date) :을 저장하려면 유형을 입력하십시오.

스포츠 토토 결과 생성 mytab (
        ... ...
        start_date abstime,
        stop_date abstime
        ... ...
);

열은 당신이 원하는대로 명명 될 수 있지만,이 토론에서 우리는 그들을 start_date 및 stop_date라고 부릅니다..

새 행이 삽입되면 START_DATE는 일반적으로 현재 시간으로 설정하고 stop_date to를 설정해야합니다.Infinity. 삽입 된 데이터 에이 열에 널이 포함 된 경우 트리거는 이러한 값을 자동으로 대체합니다. 일반적 으로이 열에 명시적인 비 널 데이터를 삽입하는 것은 덤프 데이터를 다시로드 할 때만 수행해야합니다.

stop_date와 같은 튜플Infinityare"유효한 지금"및 수정할 수 있습니다. 유한 한 stop_date가있는 튜플은 더 이상 수정할 수 없습니다. 트리거는 그것을 방지합니다. (그렇게해야한다면 아래 그림과 같이 시간 여행을 끄질 수 있습니다.)

수정 가능한 행의 경우, 업데이트시 튜플의 stop_date 만 업데이트되는 경우 (현재 시간으로) 변경되고 수정 된 데이터가 포함 된 새 튜플이 삽입됩니다. 이 새 튜플의 start_date는 현재 시간으로 설정되고 stop_date toInfinity.

삭제는 실제로 튜플을 제거하지 않고 정지 _date 만 현재 시간으로 설정합니다.

튜플 쿼리"유효한 지금", 포함stop_date = 'Infinity'쿼리의 위치 조건에서. (보기에 통합하고 싶을 수도 있습니다.) 마찬가지로, start_date 및 stop_date에 적합한 조건으로 과거에 유효한 튜플에 대한 쿼리를 할 수 있습니다..

timeTravel ()이 동작을 지원하는 일반적인 트리거 함수입니다. a 만들기삽입 또는 업데이트 또는 삭제 전각 타임 트래블 스포츠 토토 결과 에서이 기능을 사용하는 트리거. START_DATE 및 STOP_DATE 열의 실제 이름 인 두 가지 트리거 인수를 지정하십시오. 선택적으로, 당신은 1 ~ 3 개의 인수를 지정할 수 있으며, 이는 유형의 열을 참조해야합니다.텍스트. 트리거는 현재 사용자의 이름을 삽입 중에이 열 중 첫 번째 열에, 업데이트 중 두 번째 열, 삭제 중에 세 번째는 저장합니다.

set_timeTravel ()스포츠 토토 결과의 시간 여행을 켜거나 끌 수 있습니다.set_timeTravel ( 'mytab', 1)표에 tt를 켜겠습니다Mytab. set_timeTravel ( 'mytab', 0)표에 tt를 끄겠습니다Mytab. 두 경우 모두 기존 상태 가보고됩니다. TT가 꺼지는 동안 start_date 및 stop_date 열을 자유롭게 수정할 수 있습니다. ON/OFF 상태는 현재 데이터베이스 세션에 로컬입니다. 신선한 세션은 항상 모든 테이블에 대해 TT로 시작됩니다.

get_timeTravel ()변경하지 않고 스포츠 토토 결과의 TT 상태를 반환합니다.

예제가 있습니다timeTravel.example.

F.36.3. Autoinc - 자동화 분야의 기능

autoinc ()는 시퀀스의 다음 값을 정수 필드에 저장하는 트리거입니다. 이것은 내장과 약간의 겹침이 있습니다"Serial Column"기능이지만 동일하지는 않습니다.autoinc ()삽입 중에 다른 필드 값을 대체하려는 시도를 무시하고 선택적으로 업데이트 중에 필드를 증가시키는 데 사용될 수 있습니다..

사용하려면 A 생성삽입 전(또는 선택적으로삽입 또는 업데이트 전)이 함수를 사용하는 트리거. 수정할 정수 열의 이름과 값을 공급할 시퀀스 객체의 이름을 지정하십시오. (실제로, 당신은 하나 이상의 자동화 열을 업데이트하려면 해당 이름의 쌍을 지정할 수 있습니다.)

예제가 있습니다autoinc.example.

F.36.4. insert_username - 스포츠 토토 결과을 변경 한 사람 추적을위한 함수

insert_username ()는 현재 사용자의 이름을 텍스트 필드에 저장하는 트리거입니다. 이것은 테이블 내에서 특정 행을 마지막으로 수정 한 사람을 추적하는 데 유용 할 수 있습니다.

사용하려면 A를 작성하십시오.삽입 전및/또는업데이트이 함수를 사용한 트리거. 단일 트리거 인수를 지정하십시오 : 수정할 텍스트 열의 이름.

예제가 있습니다insert_username.example.

F.36.5. moddateTime - 마지막 수정 시간 추적을위한 기능

moddateTime ()현재 시간을 A에 저장하는 트리거입니다.타임 스탬프필드. 이것은 스포츠 토토 결과 내 특정 행의 마지막 수정 시간을 추적하는 데 유용 할 수 있습니다.

사용하려면 A 생성업데이트 전이 함수를 사용한 트리거. 단일 트리거 인수 : 수정 될 열의 이름을 지정하십시오. 열은 유형이어야합니다타임 스탬프또는시간대가있는 타임 스탬프.

예제가 있습니다moddateMe.example.