롤 토토 9.3.25 문서 | ||||
---|---|---|---|---|
이전 | PostgreSQL : 문서 : 9.3 : 추가 제공 배트맨 토토 | 부록 F. 추가 제공된 모듈 | 다음 |
theSPI모듈은 여러 가지를 제공합니다 사용의 실행 가능한 예토토 사이트 : 문서 : 9(SPI) 그리고 트리거. 이러한 기능은 그 자체로 약간의 가치가 있습니다. 맞아, 그들은 당신 자신을 위해 수정하는 예로 더 유용합니다. 목적. 기능은 일반적으로 사용될만큼 일반적입니다. 표이지만 롤 토토 및 필드 이름을 지정해야합니다 (설명대로 아래) 트리거를 만드는 동안.
아래에 설명 된 각 기능 그룹은 별도로 설치 할 수없는 확장.
check_primary_key ()
및check_foreign_key ()
확인에 사용됩니다
외국의 주요 제약. (이 기능은 그 이후로 오래되었습니다
물론 내장 된 외국 키 메커니즘으로 대체되었지만
모듈은 여전히 예로 유용합니다.)
check_primary_key ()
참조 롤 토토. 사용하려면 A 생성전
삽입 또는 업데이트롤 토토 에서이 함수를 사용하여 트리거합니다
다른 롤 토토 참조. 트리거 인수로 지정하십시오
외국 키를 형성하는 롤 토토의 열 이름을 참조합니다.
참조 롤 토토 이름 및 참조 롤 토토의 열 이름
기본/고유 키를 형성합니다. 여러 외국 키를 처리하려면
각 참조에 대한 트리거 생성.
check_foreign_key ()
참조 롤 토토. 사용하려면 A 생성전
삭제 또는 업데이트롤 토토 에서이 함수를 사용하여 트리거합니다
다른 표에 의해 참조됩니다. 트리거 인수로 지정하십시오
함수가 수행 해야하는 참조 롤 토토 수
확인, 참조 키가 발견되는 경우 조치 (캐스케이드- 참조 행을 삭제하려면제한- 참조 키를 참조하는 경우 거래를 중단합니다
존재하다,setNull- 참조 키를 설정하려면
필드에서 null), 트리거 된 테이블의 열 이름은 다음을 형성합니다.
기본/고유 키, 그런 다음 참조 테이블 이름과 열입니다
이름 (지정된 참조 테이블에 대해 반복
첫 번째 인수). 기본/고유 키 열은 있어야합니다
널 표시되지 않고 고유 한 색인이 있어야합니다.
에 예가 있습니다.Refint.example.
오래 전,롤 토토a 삽입 및 삭제 시간을 유지하는 내장 시간 여행 기능 각 튜플에 대해. 이것은 이러한 기능을 사용하여 모방 할 수 있습니다. 사용합니다 이 기능은의 두 열에 추가해야합니다.Abstime튜플이있는 날짜를 저장하려면 입력하십시오 삽입 (start_date) 및 변경/삭제 (stop_date) :
롤 토토 생성 mytab ( ... ... start_date abstime, stop_date abstime ... ... );
열은 원하는대로 명명 될 수 있지만 이것에서 토론 우리는 그들을 start_date 및 stop_date라고 부릅니다.
새 행이 삽입되면 start_date는 일반적으로 다음으로 설정해야합니다. 현재 시간, 그리고 stop_date toInfinity. 트리거는이 값을 자동으로 대체합니다 삽입 된 데이터에는이 열에 널이 포함되어 있습니다. 일반적으로 삽입 이 열의 명시적인 비 널 데이터는 덤프 데이터를 다시로드합니다.
stop_date와 같은 튜플Infinityare"유효한 지금"및 수정할 수 있습니다. 유한 한 stop_date가있는 튜플은 더 이상 수정할 수 없습니다. 트리거는 그것을 방해합니다. (그렇게해야한다면 꺼질 수 있습니다. 아래 그림과 같이 시간 여행.)
수정 가능한 행의 경우 튜플의 stop_date 만 업데이트 업데이트되는 것은 (현재 시간으로) 변경되고 새로운 튜플이 변경됩니다. 수정 된 데이터가 삽입됩니다. 이 새로운 것에서 start_date 튜플은 현재 시간으로 설정되고 stop_date toInfinity.
삭제는 실제로 튜플을 제거하지 않고 그 자체 만 설정합니다. stop_date to 현재 시간.
튜플 쿼리"유효한 지금", 포함하다stop_date = 'Infinity'in 쿼리는 어디에조 상태입니다. (당신은 그것을 a에 통합하고 싶을 수도 있습니다 마찬가지로, 과거에 유효한 튜플에 대한 쿼리를 할 수 있습니다. 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.
autoinc ()
는 저장하는 방아쇠입니다
정수 필드로의 시퀀스의 다음 값. 이것은 약간 있습니다
내장 된 겹치기"직렬
열"기능이지만 동일하지는 않습니다.autoinc ()
대체 시도를 무시합니다
인서트 중 다른 필드 값 및 선택적으로 사용할 수 있습니다.
업데이트 중에도 필드를 늘리려면
사용하려면 A를 작성하십시오.삽입 전(또는 선택적으로삽입 또는 업데이트 전) 이 기능을 사용하여 트리거. 두 가지 트리거 인수를 지정합니다 수정 될 정수 열의 이름과 값을 공급하는 시퀀스 객체. (실제로, 당신은 지정할 수 있습니다 그 이름의 여러 쌍, 더 이상 업데이트하려면 하나의 자동화 열보다.)
예제가 있습니다autoinc.example.
insert_username ()
트리거입니다
현재 사용자 이름을 텍스트 필드에 저장합니다. 이것은 될 수 있습니다
내에서 특정 행을 마지막으로 수정 한 추적에 유용합니다.
테이블.
사용하려면 A 생성삽입 전및/또는업데이트이 함수를 사용한 트리거. 단일 트리거 인수 지정 : 텍스트 열의 이름 수정됩니다.
예제가 있습니다insert_username.example.
moddateTime ()
트리거입니다
현재 시간을 A에 저장합니다.타임 스탬프필드. 마지막 수정 시간을 추적하는 데 유용 할 수 있습니다.
롤 토토 내의 특정 행의.
사용하려면 A 생성업데이트 전트리거 이 기능을 사용합니다. 단일 트리거 인수 : 이름을 지정하십시오 수정 될 열. 열은 유형이어야합니다타임 스탬프또는시간이 지남에 따라 타임 스탬프 존.
예제가 있습니다moddateMe.example.