sql >> データベース >  >> RDS >> PostgreSQL

ストアド関数またはプロシージャを呼び出しても、変更は挿入および永続化されません

    この特定のユースケースは、「自動コミットについて」で取り上げられています。

    「自動コミット」動作の完全な制御は、生成的なConnection.execution_options()を使用して利用できます。 Connectionで提供されるメソッド 、EngineExecutable 、選択したスコープの自動コミットをオンまたはオフにする「自動コミット」フラグを使用します。たとえば、text() コミットするストアドプロシージャを表すコンストラクトは、SELECTステートメントがCOMMITを発行するようにそれを使用する場合があります:

    engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
    

    SQLAlchemy autocommitがデータ変更操作を検出する方法は、ステートメントをパターンと照合し、UPDATE、DELETEなどを探すことです。ストアド関数/プロシージャがミューテーションを実行するかどうかを検出することは不可能であるため、自動コミットを明示的に制御できます。

    nextval()が原因で、失敗してもシーケンスがインクリメントされます およびsetval() 通話がロールバックされることはありません。




    1. AndroidでSqLiteデータベースをリセットする方法は?

    2. PostgreSQL9.1での自律型トランザクション

    3. 並列統計再構築のサポートの改善

    4. MicrosoftAccessでデータベースの破損を防ぐ方法