최상위 레벨 또는 익명 코드 블록에서 호출된 프로시저에서(DO명령)을 최상위 레벨에서 호출하면 트랜잭션을 제어할 수 있습니다. 현재 트랜잭션을 커밋하려면커밋명령. 현재 트랜잭션을 롤백하려면롤백명령. (SQL 명령을 실행할 수 없다는 점에 유의하세요.커밋또는롤백경유spi_exec또는 유사합니다. 이 함수들을 이용해서 해야 합니다.) 트랜잭션이 종료되면 자동으로 새로운 트랜잭션이 시작되므로 이에 대한 별도의 명령은 없습니다.
다음은 예입니다:
프로시저 생성 transaction_test1()
언어 pltcl
AS $$
set i 0 $i < 10 incr i
spi_exec "test1에 삽입(a) 값($i)"
if $i % 2 == 0
커밋하다
그렇지 않으면
롤백
명시적인 하위 트랜잭션이 활성화되면 트랜잭션을 종료할 수 없습니다.