BEGIN;
これにより、新しいトランザクションが開始されます。トランザクション内で行われるすべてのデータベース操作は、コミットまたはロールバックするまで一時的な変更として扱われます。
以下は、トランザクション内でのエラーハンドリングの例です:
BEGIN;
SAVEPOINT my_savepoint;
-- トランザクション内のコード例
-- ...
-- エラーハンドリング
EXCEPTION
WHEN unique_violation THEN
-- ユニーク制約違反のエラー処理
-- ...
WHEN others THEN
-- その他のエラーの処理
-- ...
-- トランザクションのコミットまたはロールバック
-- ...
上記の例では、SAVEPOINT文を使用して、トランザクション内の特定のポイントでセーブポイントを作成しています。これにより、エラーが発生した場合にセーブポイントまでロールバックすることができます。
また、EXCEPTIONブロック内でエラーハンドリングを行っています。unique_violationはユニーク制約違反のエラーを処理するための例ですが、othersを使用することで他の種類のエラーも処理することができます。
最後に、トランザクションのコミットまたはロールバックを行う必要があります。コミットする場合は、以下のコマンドを使用します:
COMMIT;
ロールバックする場合は、以下のコマンドを使用します:
ROLLBACK;
以上が、PostgreSQLでトランザクションを開始し、エラーを処理する方法の基本的な概要です。実際の使用例やさらなる詳細については、公式のPostgreSQLドキュメントを参照してください。