

# Aurora PostgreSQL でのローカル書き込み転送の制限と考慮事項


 Aurora PostgreSQL でのローカル転送には、現在、以下の制限が適用されます。
+  ローカル書き込み転送は RDS Proxy ではサポートされていません。
+  書き込み転送機能を持つ Aurora PostgreSQL では、特定のステートメントが許可されないか、古い結果を生成する可能性があります。また、ユーザー定義関数とユーザー定義プロシージャはサポートされていません。したがって、DB クラスターでは `EnableLocalWriteForwarding` 設定がデフォルトではオフになっています。オンにする前に、アプリケーションコードがこれらの制限の影響を受けていないことを確認してください。
+  書き込み転送では、次の種類の SQL ステートメントはサポートされていません。
**注記**  
これらのステートメントは、アプリケーションで暗黙的に使用することも、PostgreSQL プロトコルで推測することもできます。例えば、PL/SQL 例外処理では、サポートされていないステートメントである SAVEPOINT が使用される場合があります。
  +  `ANALYZE` 
  +  `CLUSTER` 
  +  `COPY` 
  + カーソル — カーソルはサポートされていないため、ローカル書き込み転送を使用する前に必ずカーソルを閉じてください。
  +  データ定義言語 (DDL) ステートメント 
  +  `GRANT`\$1`REVOKE`\$1`REASSIGN OWNED`\$1`SECURITY LABEL`
  +  `LISTEN / NOTIFY` 
  +  `LOCK` 
  +  `SAVEPOINT` 
  +  `SELECT INTO` 
  +  `SET CONSTRAINTS` 
  +  シーケンスの更新: `nextval()`、`setval()`
  +  `TRUNCATE` 
  +  2 相コミットコマンド: `PREPARE TRANSACTION`、`COMMIT PREPARED`、`ROLLBACK PREPARED`
  + ユーザー定義関数とユーザー定義プロシージャ。
  +  `VACUUM` 

 書き込み転送では、以下の SQL ステートメントを使用することを検討できます。
+ DML ステートメントは、`INSERT ... SELECT` ステートメントや `DELETE ... WHERE` ステートメントなど、複数の部分から構成される場合があります。この場合、ステートメント全体がライター DB インスタンスに転送され、そこで実行されます。
+ `INSERT`、`DELETE`、および `UPDATE` などのデータ操作言語 (DML) ステートメント。
+  このリストにあるステートメントを含む `EXPLAIN` ステートメント
+  `PREPARE` と `EXECUTE` ステートメント。
+  `SELECT FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }` ステートメント。