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 はキーワードではありません。