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

2つのセーブポイント間でネストされたトランザクションのロールバック?

    セーブポイントはあなたが望むことをしません。セーブポイントにロールバックすると、後でセーブポイントが作成されたかどうかに関係なく、そのセーブポイント以降のすべてがロールバックされます。

    セーブポイントは「スタック」のようなものと考えてください。スタックの真ん中から何かを引き出すことはできません。必要なレイヤーまですべてを削除する必要があります。

    あなたはおそらく自律的なトランザクションを探しています。使用するデータベースはどれもそれらをサポートしていません。 PostgreSQLでは、dblinkモジュールを使用してこれを回避し、データベースへの新しい接続を確立して、それを操作できます。 http://www.postgresql.org/docs/current/static/を参照してくださいdblink.html 。 MySQLまたはSQLiteが提供するソリューションはわかりませんが、探している用語がわかったので、Googleがお手伝いします。

    可能であれば、このアプリケーション設計要件を回避する方法を見つけることをお勧めします。アプリケーションで2つのデータベース接続と2つのトランザクションを使用して、必要な処理を実行し、必要に応じて2つを調整します。




    1. リスト内のすべてのアイテムに一致する行を選択する2つの方法(T-SQL)

    2. 結合されたテーブルで特定の条件を満たさないすべてのレコードを選択します

    3. 特定の列によるデルタ(現在の行と前の行の差)mysqlグループを計算します

    4. 正しくエンコードされていないデータを含むMySQLテーブルをUTF-8に変換する