SQL enhancements

EDB Postgres Extended Serverには、多数のSQL拡張機能が含まれています。

ロールバックオプション

PostgreSQLでは、トランザクションでエラーが発生すると、そのトランザクションによるすべてのアクションがロールバックされます。この動作は、 Oracle やSQL Serverなどの他のDBMSとは異なります。エラーにより、最後のステートメントのみがロールバックされます。トランザクション処理のセマンティクスのこの違いは、すべての場合に問題を引き起こすわけではありませんが、Oracle DatabaseおよびMicrosoft SQL Serverの開発者にとって、PostgreSQLにビジネスロジックを実装することは困難です。

1つの回避策は、内部的にサブトランザクションと呼ばれるセーブポイントをアプリケーションコードに手動で導入することです。これは時間がかかり、テストするのが困難です。セーブポイントは追加のステートメントであるため、トランザクションの待機時間が長くなります。追加の開発作業のオーバーヘッドとパフォーマンスの低下を考えると、このアプローチはほとんどの場合実行可能ではありません。

EDB Postgres Extended Serverを使用すると、現在のステートメントだけをロールバックできます。ステートメントレベルのロールバック機能は、トランザクション全体または現在のステートメントのみのロールバックを許可するかどうかを選択するオプションのモードを提供します。手動での記録は必要ありません。オーバーヘッドがいくらか追加されますが、セーブポイントよりも低くなります。

データベース内のトランザクションロールバックスコープの設定については transaction_rollback_scope を、JDBCバッチジョブでエラーを過ぎて続行する方法については JDBC properties for rollback scope を参照してください。

準備されたステートメントを含むカーソル

EDB Postgres Extended Serverを使用すると、以前に作成した準備済みステートメントにカーソルを宣言できます。

例:

PREPARE foo AS ...; DECLARE c1 CURSOR FOR foo;

PL / pgSQLの互換性

EDB Postgres Extended Serverは、多数のPL / pgSQL互換性機能を備えた他の移行ツールと統合されています。

一般的に簡単にするために、 EDB Postgres Extended Serverでは、 PERFORMキーワードなしでplpqslを使用して関数を呼び出すことができます。たとえば、

BEGIN somefunc(); END

somefunc はキーワードではありません。