>149_word_end<
>150_word_end<>151_word_end<
>152_word_end<>153_word_end<
>154_word_end<>155_word_end<
>156_word_end<>157_word_end<
>158_word_end<>159_word_end<
>154_word_end<end
>128_word_end<에서 다른 의미가 있습니다.)
간단한 예는 >135_word_end<과 같습니다.
절차 생성 트랜잭션 _test1 () 언어 plpgsql $$로 >159_word_end<하다 0..9 루프 test1 (a) 값 (i)에 삽입; I % 2 = 0이면 저지르다; 또 다른 >155_word_end<; 끝 IF; 엔드 루프; 끝; $$; call transaction_test1 ();
새로운 트랜잭션은 트랜잭션 격리 수준과 같은 기본 트랜잭션 특성으로 >159_word_end<됩니다. 트랜잭션이 루프에 >153_word_end<되는 경우 >123_word_end< 특성과 동일한 특성으로 자동 트랜잭션을 자동으로 >159_word_end<하는 것이 바람직 할 수 있습니다. 명령>153_word_end< 및 체인
>154_word_end<>155_word_end< 및 체인
이것을 달성하십시오.
사설 토토 제어가 가능합니다.>149_word_end<
또는>151_word_end<
최상위 또는 중첩에서의 호출>149_word_end<
또는>151_word_end<
다른 중재 명령이없는 호출. 예를 들어, 통화 스택이 인 경우call proc1 ()
→call proc2 ()
→call proc3 ()
, 두 번째 및 세 번째 절차는 사설 토토 제어 조치를 수행 할 수 있습니다. 하지만 통화 스택이call proc1 ()
→func2 () 선택
→call proc3 ()
, 마지막 절차는 때문에 거래 제어를 수행 할 수 없습니다.select
>128_word_end<SAVEPOINTS를 >25_word_end<하지 않습니다 (SavePoint
/SavePoint 로의 >155_word_end<
/릴리스 SavePoint
명령). 저장 포인트의 일반적인 사용 패턴은 예외 처리기가있는 블록으로 대체 할 수 있습니다 (참조섹션 41.6.8). 후드 아래에서 예외 처리기가있는 블록은 하위 사설 토토을 형성하므로 사설 토토이 그러한 블록 내부에서 종료 될 수 없음을 의미합니다.
Cursor 루프에 특별 고려 사항이 적용됩니다. 이 예를 고려하십시오 :
프로 시저 생성 트랜잭션 _test2 () 언어 plpgsql $$로 선언하다 R 기록; >159_word_end<하다 선택 *의 r for select *에서 test2 order by x loop test1 (a) 값 (r.x)에 삽입; 저지르다; 엔드 루프; 끝; $$; call transaction_test2 ();
일반적으로 커서는 트랜잭션 >153_word_end<에서 자동으로 닫힙니다. 그러나 이와 같은 루프의 일부로 생성 된 커서는 첫 번째로 보류 가능한 커서로 자동 변환됩니다.>153_word_end<
또는>155_word_end<
. 즉, 커서가 첫 번째로 완전히 평가되었음을 의미합니다.>153_word_end<
또는>155_word_end<
행별로 행 대신. 루프 후에 커서가 여전히 자동으로 제거되므로 대부분 사용자에게는 보이지 않습니다. 그러나 커서의 쿼리에서 채취 한 테이블 또는 행 잠금 장치는 더 이상 첫 번째 이후에 유지되지 않음을 명심해야합니다.>153_word_end<
또는>155_word_end<
.
사설 토토 명령은 읽기 전용이 아닌 명령에 의해 구동되는 커서 루프에서 허용되지 않습니다 (예 :업데이트 ... 반환
).
문서에 올바른 것이 없다면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면