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

F.36. 스파이

스피모듈은토토 꽁 머니 PostgreSQL: (SPI) 및 트리거. 이러한 함수는 그 자체로 어느 정도 가치가 있지만 자신의 목적에 맞게 수정하는 예제로 훨씬 더 유용합니다. 함수는 모든 스포츠 토토 결과에 사용할 수 있을 정도로 일반적이지만 트리거를 생성하는 동안 스포츠 토토 결과 및 필드 이름(아래 설명 참조)을 지정해야 합니다.

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

F.36.1. refint — 참조 무결성 구현을 위한 함수

check_primary_key()그리고check_foreign_key()은 외래 키 제약 조건을 확인하는 데 사용됩니다. (물론 이 기능은 내장된 외래 키 메커니즘으로 대체된 지 오래되었지만 모듈은 여전히 예로서 유용합니다.)

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

check_foreign_key()참조된 테이블을 확인합니다. 사용하려면 다음을 생성하세요.삭제 또는 업데이트 전다른 스포츠 토토 결과에서 참조하는 스포츠 토토 결과에서 이 함수를 사용하여 트리거합니다. 트리거 인수로 지정: 함수가 검사를 수행해야 하는 참조 스포츠 토토 결과 수, 참조 키가 발견된 경우 작업(계단식— 참조 행을 삭제하려면,제한— 참조 키가 존재하는 경우 트랜잭션을 중단합니다.setnull— 참조 키 필드를 null로 설정), 기본/고유 키를 형성하는 트리거된 스포츠 토토 결과의 열 이름, 참조 스포츠 토토 결과 이름 및 열 이름(첫 번째 인수로 지정된 참조 스포츠 토토 결과 수만큼 반복됨). 기본/고유 키 열은 NOT NULL로 표시되어야 하며 고유 인덱스가 있어야 합니다.

다음에 예가 있습니다.refint.example.

F.36.2. timetravel — 시간 여행을 구현하기 위한 함수

오래 전,스포츠 토토 결과각 튜플의 삽입 및 삭제 시간을 유지하는 시간 이동 기능이 내장되어 있습니다. 이는 이러한 기능을 사용하여 에뮬레이트할 수 있습니다. 이러한 함수를 사용하려면 스포츠 토토 결과에 두 개의 열()을 추가해야 합니다.절대튜플이 삽입된 날짜(start_date) 및 변경/삭제된 날짜(stop_date)를 저장하려면 입력하세요.

테이블 생성 mytab(
        ... ...
        start_date 절대 시간,
        stop_date 절대 시간
        ... ...
);

열의 이름은 원하는 대로 지정할 수 있지만 이 토론에서는 start_date 및 stop_date라고 하겠습니다.

새 행이 삽입되면 일반적으로 start_date는 현재 시간으로 설정되고 stop_date는 다음으로 설정되어야 합니다.무한대. 삽입된 데이터의 열에 Null이 포함된 경우 트리거는 자동으로 이러한 값을 대체합니다. 일반적으로 이러한 열에 null이 아닌 명시적인 데이터를 삽입하는 작업은 덤프된 데이터를 다시 로드할 때만 수행되어야 합니다.

stop_date가 다음과 같은 튜플무한대아르"지금 유효합니다"이며 수정될 수 있습니다. 유한한 stop_date가 있는 튜플은 더 이상 수정할 수 없습니다. 트리거가 이를 방지합니다. (꼭 그렇게 해야 한다면 아래와 같이 시간여행을 꺼두시면 됩니다.)

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

삭제는 실제로 튜플을 제거하지 않으며 단지 stop_date를 현재 시간으로 설정합니다.

튜플을 쿼리하려면"지금 유효합니다", 포함stop_date = '무한대'쿼리의 WHERE 조건. (이를 뷰에 통합할 수 있습니다.) 마찬가지로 start_date 및 stop_date에 대한 적절한 조건을 사용하여 과거에 유효한 튜플을 쿼리할 수 있습니다.

시간여행()은 이 동작을 지원하는 일반 트리거 함수입니다. 생성하기삽입, 업데이트 또는 삭제 전각 시간 이동 테이블에서 이 함수를 사용하여 트리거합니다. start_date 및 stop_date 열의 실제 이름이라는 두 개의 트리거 인수를 지정합니다. 선택적으로 다음 유형의 열을 참조해야 하는 인수를 1~3개 더 지정할 수 있습니다.텍스트. 트리거는 INSERT 중 첫 번째 열, UPDATE 중 두 번째 열, DELETE 중 세 번째 열에 현재 사용자의 이름을 저장합니다.

set_timetravel()스포츠 토토 결과의 시간 여행을 켜거나 끌 수 있습니다.set_timetravel('mytab', 1)스포츠 토토 결과에 대해 TT를 ON으로 설정합니다마이탭. set_timetravel('mytab', 0)스포츠 토토 결과에 대해 TT를 끌 것입니다마이탭. 두 경우 모두 이전 상태가 보고됩니다. TT가 꺼져 있는 동안 start_date 및 stop_date 열을 자유롭게 수정할 수 있습니다. 켜짐/꺼짐 상태는 현재 데이터베이스 세션에 대해 로컬입니다. 새로운 세션은 모든 테이블에 대해 항상 TT ON으로 시작됩니다.

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

다음에 예가 있습니다.timetravel.example.

F.36.3. autoinc — 필드 자동 증가를 위한 함수

자동 증가()은 시퀀스의 다음 값을 정수 필드에 저장하는 트리거입니다. 이는 내장된 것과 일부 겹치는 부분이 있습니다."직렬 열"기능이지만 동일하지 않습니다.자동 증가()삽입 중에 다른 필드 값을 대체하려는 시도를 재정의하며 선택적으로 업데이트 중에 필드를 증가시키는 데에도 사용할 수 있습니다.

사용하려면 다음을 만드세요.삽입 전(또는 선택적으로삽입 또는 업데이트 전)는 이 함수를 사용하여 트리거합니다. 두 개의 트리거 인수, 즉 수정할 정수 열의 이름과 값을 제공할 시퀀스 개체의 이름을 지정합니다. (실제로 두 개 이상의 자동 증가 열을 업데이트하려는 경우 이러한 이름 쌍을 원하는 만큼 지정할 수 있습니다.)

다음에 예가 있습니다.autoinc.example.

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

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

사용하려면 다음을 생성하세요.삽입 전및/또는업데이트이 함수를 사용하여 트리거합니다. 단일 트리거 인수(수정할 텍스트 열의 이름)를 지정합니다.

다음에 예가 있습니다.insert_username.example.

F.36.5. moddatetime — 마지막 수정 시간을 추적하는 함수

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

사용하려면 다음을 생성하세요.업데이트 전이 함수를 사용하여 트리거합니다. 단일 트리거 인수(수정할 열의 이름)를 지정합니다. 열은 유형이어야 합니다.타임스탬프또는시간대가 포함된 타임스탬프.

다음에 예가 있습니다.moddatetime.example.