토토 8.4.22 문서 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 8.4 : 와이즈 토토 | 빠른 뒤로 | 부록 F. 추가 제공된 모듈 | 빠른 전달 | 다음 |
theContrib/토토모듈 제공 SPI 및 트리거 사용의 몇 가지 실행 가능한 예. 이들 함수는 그 자체로 어떤 가치가 있으며, 심지어 자신의 목적을 위해 수정하는 예로 더 유용합니다. 그만큼 기능은 모든 토토과 함께 사용하기에 충분히 일반적이지만 토토 및 필드 이름 (아래 설명대로)을 지정해야합니다. 방아쇠 만들기.
check_primary_key ()
andcheck_foreign_key ()
익숙합니다
외국의 주요 제약 조건을 확인하십시오. (이 기능은 길다
내장 된 외국 키 메커니즘으로 대체 된 이후
코스이지만 모듈은 여전히 예로 유용합니다.)
check_primary_key ()
참조 토토. 사용하려면 A 생성전
삽입 또는 업데이트토토 에서이 함수를 사용하여 트리거합니다
다른 토토 참조. 트리거 인수로 지정하십시오.
외국을 형성하는 참조 토토의 열 이름
키, 참조 토토 이름 및 열 이름은
기본/고유 키를 형성하는 참조 토토. 처리하려면
다중 외국 키, 각 참조에 대한 트리거를 만듭니다.
check_foreign_key ()
참조 토토. 사용하려면 A 생성전
삭제 또는 업데이트토토 에서이 함수를 사용하는 트리거
다른 표에 의해 참조됩니다. 트리거 인수로 지정하십시오.
함수가 필요한 참조 토토의 수
참조 키가 발견되는 경우 점검을 수행합니다.
(캐스케이드- 참조를 삭제하려면
열,제한- 거래 중단
참조 키가 존재하는 경우SetNull-
참조 키 필드를 NULL로 설정하려면 트리거 된 토토의
기본/고유 키를 형성하는 열 이름
참조 토토 이름 및 열 이름 (많은 경우 반복
첫 번째 인수에 의해 지정된 참조 표). 메모
기본/고유 키 열은 NULL이 아닌 것으로 표시되어야합니다.
고유 한 색인이 있어야합니다.
에 예가 있습니다.Refint.example.
오래 전,토토인서트 및 삭제를 유지하는 내장 시간 여행 기능 각 튜플에 대한 시간. 이것은 이것들을 사용하여 모방 할 수 있습니다 기능. 이 기능을 사용하려면 표 2에 추가해야합니다. 열Abstime날짜를 저장하려면 입력하십시오 튜플을 삽입하고 (start_date) 변경/삭제 될 때 (stop_date) :
토토 생성 mytab ( ... ... start_date abstime, stop_date abstime ... ... );
열은 원하는대로 명명 될 수 있지만 이것에서 토론 우리는 그들을 start_date 및 stop_date라고 부릅니다.
새 행이 삽입되면 start_date는 일반적으로 현재 시간으로 설정하고 stop_date toInfinity. 토토가 자동으로됩니다 삽입 된 데이터에 NULLS가 포함 된 경우 이러한 값을 대체합니다. 이 열. 일반적으로 명시적인 비 널 데이터를 삽입합니다 이 열은 다시로드 된 덤프시에만 수행해야합니다 데이터.
stop_date와 같은 튜플Infinityare"유효합니다 지금", 수정할 수 있습니다. 유한 한 튜플 stop_date는 더 이상 수정할 수 없습니다 - 토토는 방지합니다. 그것. (그렇게해야한다면 시간 여행을 끄울 수 있습니다. 아래 표시.)
수정 가능한 행의 경우, stop_date 만 업데이트하여 업데이트되는 튜플은 (현재 시간으로) 변경 될 것입니다. 수정 된 데이터와 튜플이 삽입됩니다. start_date in 이 새로운 튜플은 현재 시간으로 설정되고 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)토토 mytab에 대한 tt를 끄겠습니다. 두 경우 모두 노인
상태 가보고됩니다. TT가 꺼지는 동안 수정할 수 있습니다
start_date 및 stop_date 열을 자유롭게. 온/꺼짐에 유의하십시오
상태는 현재 데이터베이스 세션에 로컬입니다.
세션은 항상 모든 토토에 대해 TT로 시작됩니다.
get_timeTravel ()
반환합니다
변경하지 않고 토토의 TT 상태.
예제가 있습니다timeTravel.example.
autoinc ()
트리거입니다
시퀀스의 다음 값을 정수 필드에 저장합니다. 이것
내장과 약간의 겹침"시리얼
열"기능이지만 동일하지는 않습니다.autoinc ()
시도를 무시할 것입니다
인서트 중에 다른 필드 값을 대체하고
선택적으로 그것은 동안 필드를 증가시키는 데 사용될 수 있습니다.
업데이트도
사용하려면 A삽입 전(또는 선택적으로삽입 또는 업데이트 전) 이 기능을 사용하여 토토. 두 가지 토토 인수를 지정합니다 수정 될 정수 열의 이름과 값을 공급하는 시퀀스 객체. (실제로, 당신은 할 수 있습니다 원하는 경우 해당 이름의 여러 쌍을 지정하십시오. 하나 이상의 자동화 열을 업데이트하십시오.)
예제가 있습니다autoinc.example.
insert_username ()
트리거입니다
현재 사용자 이름을 텍스트 필드에 저장합니다. 이것은 할 수 있습니다
특정 행을 마지막으로 수정 한 사람 추적에 유용합니다.
테이블 안에.
사용하려면 A를 작성하십시오.삽입 전및/또는업데이트이것을 사용하는 트리거 기능. 단일 트리거 인수 : 이름의 이름을 지정하십시오 수정할 텍스트 열.
예제가 있습니다insert_username.example.
moddateTime ()
토토입니다
현재 시간을 A에 저장합니다.타임 스탬프필드. 추적에 유용 할 수 있습니다
특정 행의 마지막 수정 시간 내에서
토토.
사용하려면 A 생성업데이트 전이 함수를 사용한 토토. 단일 토토 인수를 지정합니다. 의 이름타임 스탬프열 예정입니다 수정.
예제가 있습니다moddateTime.example.
PostgreSQL : 문서 : 8.4 : 와이즈 토토 | 홈 | 다음 |
SEG | up | sslinfo |