問題タブ [rollback]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 重複キー エラーは mysql トランザクションをキャンセル/ロールバックしません
mysql innodb トランザクションでは、重複キー エラーによってロールバックが発生すると予想されます。そうではなく、単純にエラーをスローして次のコマンドに進みます。COMMIT コマンドに到達すると、トランザクションはコミットされ、重複キーの原因となるコマンドは削除されます。
これは予想される動作ですか?もしそうなら、そのようなエラーが発生したときにトランザクションがコミットされるのではなくロールバックされるように設定するにはどうすればよいでしょうか?
テスト環境:
期待される結果: テーブルtest
は空です
実際の結果: テーブルtest
には値が 5 のレコードが 1 つ含まれます
java - JavaでのRollbackExceptionの処理
トランザクションを「再生」する方法はありますか?つまり、RollbackExceptionが発生し、トランザクションがロールバックされることがあります。次に、トランザクションを「複製」して再試行できますか、またはロールバックが呼び出されると、トランザクションは失われますか?私は本当に変更が必要であり、後で再実行するためにすべての変更を追跡したくありません...
ありがとう、ウディ
sql - トランザクション内の SQL バッチ中止エラーから回復しますか? 別?
優先度の低いデータの挿入中にエラーが発生しても、トランザクションの実行を継続する方法を探しています。実際のネストされたトランザクションが解決策になるようですが、SQL Server 2005/2008 ではサポートされていません。別の解決策は、エラーが重大かどうかを判断するロジックを用意することですが、それも不可能のようです。
私のシナリオの詳細は次のとおりです。
データは ADO.NET/C# を使用してデータベースに定期的に挿入されます。データの一部は重要ですが、一部は問題なく欠落している可能性もあります。挿入が完了すると、データに対していくつかの計算が行われます。(バイタルと非バイタルの両方) このプロセス全体がトランザクション内にあるため、すべてが同期されます。
現在、トランザクション セーブ ポイントが使用され、非重要な挿入中に発生する例外に対して部分的なロールバックが行われます。ただし、これは、トランザクション全体を自動的にロールバックする「バッチ中止」エラーには機能しません。一部のエラーが重大であることは理解していますが、失敗したキャストなどは、SQL Server によってバッチ中止エラーと見なされます。(バッチ エラーに関する情報) これらのエラーが優先度の低いデータで発生した場合に、挿入全体が停止するのを防止しようとしています。
私が説明していることが不可能な場合は、データの整合性を達成するための代替方法を検討しますが、非重要な挿入の失敗は許可します.
ご協力いただきありがとうございます。
c# - ロールバック機能をどのように実装しますか?
2 つの異なるフォルダー (既に古いバージョンのファイルが含まれています) にいくつかのファイルをコピーし、SQL スクリプトも実行する C# アプリケーションを作成したいと考えています。プロセス全体で例外が発生した場合、すべての変更をロールバックする必要があります。
SQLスクリプトの場合、トランザクションを使用できますが、ロールバックを使用してファイルのコピープロセスを実装するにはどうすればよいですか?
c# - EntityFrameworkでトランザクションをロールバックできません
コミットされていない変更についてクエリを実行する必要があり、トランザクションを使用しようとしましたが、例外があると機能しないことがわかりました。
問題を再現するための簡単な例を作成しました。「Tabella」というテーブルが1つしかないデータベースがあり、テーブルには2つのフィールドがあります。「ID」は自動生成された整数で、「Valore」は一意性制約のある整数です。次に、このコードを実行しようとします。
データベースを調べると、トランザクションがロールバックする必要があるため、レコードが含まれていないはずです。代わりに、2つのレコードが見つかります!!!! 1つはValore=1で、もう1つはValore=2です。私は何かが足りないのですか?SaveChangesメソッドへの2回目の呼び出しは、それ自体の変更をロールバックしてトランザクションを「削除」し、次にSaveChangesへの3回目の呼び出しは、1回目と3回目の挿入の変更をコミットするようです(この時点では、トランザクションが存在しないようです)。
また、SaveChanges(false)メソッドを使用しようとしましたが(AcceptAllChangesメソッドを呼び出さなくても)、成功しませんでした。同じ動作をします。
エラーを修正して(たとえば、catchステートメントでのユーザー操作によって)再試行するため、SaveChangesによってトランザクションが自動的にロールバックされることは望ましくありません。
誰かがこれを手伝ってくれますか?それは「バグ」のようで、それは私に本当に大きな頭痛の種を与えています...
sql - System.Data.SqlClient を使用した Ironpython でのロールバック
次のコード スニペットを使用してロールバックできず、助けが必要です。
ありがとう!
私は今理解しましたが、文字列を期待しているという問題がありますが、SQLクエリ文字列を引数として入れると、パラメータ化された値を実行できません:
sql - マルチユーザー環境でのデータ編集のロールバックを処理しますか?
マルチユーザー環境でのデータ編集のロールバックを通常どのように処理しますか?トランザクションを識別し、後続の依存トランザクションのグラフを作成してから、それらをすべてロールバックしますか?ほとんどのRDBMSは、この種のことを行うためのインターフェイスまたはメカニズムを提供していますか?
私は素朴で、バックアップから復元することを考えましたが、これにより、潜在的に数十人のユーザーが無関係のレコードに加えた変更が元に戻されることに気付きました。編集/バックアップの時間と現在の時間の間。
tsql - 「ROLLBACK TRANSACTION named_transaction」のポイントは何ですか?
ROLLBACK TRANSACTIONとネストされたトランザクションに関する MSDN を読みました。のポイントを見ているうちにROLLBACK TRANSACTION savepointname
、わからないROLLBACK TRANSACTION transactionname
。
transactionname
が最も外側のトランザクションである場合にのみ機能しますROLLBACK
次の場合を除いて、常にトランザクション「スタック」全体をロールバックします。savepointname
基本的にドキュメントを読んでいる限り、セーブポイントの場合を除いて、ROLLBACK
すべてのトランザクションをロールバックします(へ@@TRANCOUNT=0
)。私が見ることができる唯一の違いは、このスニペットです:
外部トランザクションの名前を使用する ROLLBACK TRANSACTION transaction_name ステートメントが、ネストされた一連のトランザクションの任意のレベルで実行されると、ネストされたすべてのトランザクションがロールバックされます。transaction_name パラメーターを指定しない ROLLBACK WORK または ROLLBACK TRANSACTION ステートメントが、一連のネストされたトランザクションのいずれかのレベルで実行されると、ネストされたすべてのトランザクション (最も外側のトランザクションを含む) がロールバックされます。
読んだところ、これは、名前付きトランザクション (最も外側のトランザクションの名前でなければなりません) をロールバックすると、ネストされたトランザクションのみがロールバックされることを示唆しています。これにより、名前付きトランザクションをロールバックする意味が得られます。だから私はテストを設定しました:
結果は(すべての「影響を受けたX行」のものは削除されました)
変更しても出力に違いはないことに注意してください
単純に
それで、のポイントは何ですか?ROLLBACK TRANSACTION named_transaction
git - 「パブリック」gitサーバーからプルして、壊れたローカル「マスター」を最新の状態にするにはどうすればよいですか?
少し苦境があります。基本的に、私はローカルの「マスター」gitリポジトリを持っています。数時間ごとに、変更をサーバーに「git push」し、そこからクライアントマシンにプルします。ええと、私は天才なので、誤ってGITKを使用して、ローカルの「マスター」リポジトリを1つのバージョンにロールバックしすぎました。
最後にコミットされたバージョンをサーバーからプルバックし、ローカルバージョンを「見事に」動作させるための手順は何ですか?
一番。
編集:すべての優れた答え。とても有難い!
c# - C#のオブジェクトのトランザクション
オブジェクトに対してトランザクションを実行する方法があるかどうか疑問に思いました。私は次の状況についてこの質問をしています:
オブジェクトをデータアクセス層に渡します。そこで、transactionscopeを使用して、データベースが破損しないようにします。
そのプロセスでは、オブジェクトを変更できます(datechanged、owner、ect ...)。ただし、トランザクションが失敗した場合、transactionscopeはデータベース内のトランザクションをロールバックしますが、オブジェクト上ではロールバックしません。
このようにして、オブジェクト(参照によって渡される)は少し破損しています。
これに対する解決策があることを願っています。