2013-07-30 4 views
0

트랜잭션을 구현하는 postgresql 함수를 작성하고 있습니다. 이 코드가 어떻게 보이는지 :postgresql transaction : 쿼리 오류를 확인하십시오.

BEGIN TRANSACTION REPEATABLE READ 
INSERT INTO table1 VALUES(value1, value2); 
INSERT INTO table2 VALUES(value3); 
COMMIT 
END; 

이제 삽입 쿼리 중 하나가 삽입 롤백에 대한 오류를 반환하는지 확인해야합니다. 내가 어떻게 해?

+1

오류를 확인할 필요가 없습니다. 명령 중 하나가 오류를 throw하면 트랜잭션이 자동으로 롤백됩니다. –

+0

그래서 나는 명시적인 경우에만 롤백을 호출 할 수 있습니다. 즉, select 쿼리를 호출하고 반환 값이 상수보다 큽니다. – giozh

+0

예. 그러나 명시 적 롤백은 거의 사용되지 않습니다. 대부분 오류가 발생하면 롤백이 발생합니다. 이러한 오류는 롤백의 원인을 명확하게 나타냅니다. –

답변

-1

오류를 확인하고 오류를 처리하는 것이 좋습니다. 일관되게해라. 트랜잭션은 자동으로 롤백되지만 사용자가 문제를 기록하도록 경고하거나 다른 조치를 취할 수 있습니다. 이것은 데이터베이스 오류가있는 경우 트랜잭션이 자체적으로 롤백 할 것이라고 말합니다.

반면에 응용 프로그램 오류 (데이터베이스 외부)로 인해 트랜잭션을 롤백해야하는 경우 ROLLBACK 명령을 실행합니다.