問題タブ [sqltransaction]
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: 行挿入時のトランザクションの安全性
次の 2 つの MySQL ステートメントを実行します。
2 番目のステートメントが、最初のステートメントによって返された行を正確に変更することが重要です (追加の行や 1 つ少ない行はありません)。したがって、トランザクションを auto_commit=false で実行し、select ステートメントの「for update」バージョンを使用します。
「For Update」は、返されるすべての行をロックするため、2 番目のステートメントが実行されたときに元の状態になります。しかし、挿入はどうですか?別のスレッドが field1=val1 の間に新しい行を挿入し、2 番目のステートメントによって変更される可能性はありますか?
もう 1 つの質問: 2 番目のステートメントが行自体を変更するのではなく、次のようなことを行う場合、違いはありますか?
(3) が (1) と同じトランザクションにある場合、両方の選択がまったく同じ要素を返すことが保証されますか?
編集:
私は InnoDB を使用しており、次のキーのロックとギャップのロックに関するいくつかの記事を読みました。私の知る限り、(1) の実行中、InnoDB は選択された行だけでなく、アクセスされたインデックスもロックしていました。
では、列「field1」にインデックスがある場合、この問題は発生しないと言うのは正しいでしょうか? インデックスがない場合はどうなりますか?じゃあ違うの?
c# - トランザクション使用時のエラー
重複の可能性:
ExecuteNonQuery では、コマンドでコードにトランザクション エラーが発生する必要があります。
上記のコードを使用するとエラーが発生します
ExecuteNonQuery では、コマンドに割り当てられた接続が保留中のローカル トランザクションにある場合、コマンドにトランザクションが必要です。コマンドのトランザクション プロパティが初期化されていません。
sql - トランザクションは node-postgres でどのように機能しますか?
node-postgres を使用して、コールバック スタイルで SQL クエリを作成しています。クエリのリストを取り込んでトランザクション ブロック内で実行する関数があります。私の理解では、node-postgres を使用してクエリ「BEGIN」を送信し、トランザクション ブロック内で必要なすべてのクエリを送信してから、クエリ「COMMIT」を送信します。
ただし、クエリは有効ですが (単純な挿入、スタンドアロン クエリとして十分にテストされています)、トランザクション ブロックの後にデータベースの状態をテストすると、すべてが正しい順序で確実に実行されます。矛盾した状態。すべての挿入が行われることもあれば、一部だけが行われることもありました。私の理解では、トランザクションブロックはアトミックであるため、ブロック内の挿入は、コミットの直後に SELECT を使用して検索する際にすべてかゼロである必要があります。
これが私の機能です:
ヘルパー関数 tryQuery を使用:
何がうまくいかないのかについて何か考えはありますか?
c# - 同じテーブルで同時に複数のトランザクション
多くのスレッドで編集できるテーブルがあるという問題が発生しています。各スレッドは、このテーブルを操作するトランザクションを作成します。トランザクションの完了に時間がかかる場合、他のスレッドは「Query Timeout Expired」という例外をスローします。 . トランザクションのタイムアウト設定がどこかにあると思います。
これに対処するには、スレッド ロックを使用できます。ただし、サーバー側でこれを行う方法はありますか? SQL サーバーでロックを作成できますか? どんな助けでもいただければ幸いです。
sql-server - SQLServer2005でtrycatchでエラーがキャッチされたときにトランザクションがロールバックしないようにする方法
レコードを含むテーブルTable1があります
ここでは、F1 Varcharのデータ型をDecimal(3,0);に変更します。次に、新しい構造で新しいテーブルを作成します。
varcharを10進数に明示的に変換して、古いテーブルの各レコードを新しいテーブルに挿入したいと思います。だから私はtrycatchブロックでこのコマンドを書いています。エラーが発生した場合、catchブロックでデフォルト値で埋めることができます。ただし、この作業全体は、トランザクションの開始とトランザクションのコミットブロックの間で実行されます。そのため、キャッチブロックでエラーが発生すると、それ以上の作業ができなくなり、エラーが発生します。
現在のトランザクションはコミットできず、ログファイルに書き込む操作をサポートできません。トランザクションをロールバックします。
trycatchブロックでエラーが発生した場合でもこのトランザクションがロールバックされないようにする方法。
sql-server - try catch でネストされたトランザクションを管理する方法
エラー発生:
メッセージ 3931、レベル 16、状態 1、行 17 現在のトランザクションをコミットできず、セーブポイントにロールバックできません。トランザクション全体をロールバックします。
これを処理する方法。
database - プログラム内のトランザクションとデータベース内のトランザクション
私は新しいプログラマーです
私が知っているのは、トランザクション制御をSQLする2つの方法があることだけです。でも知りたいのは
1.1 プログラムでトランザクションを使用する必要がある場合と、データベースでトランザクションを使用する必要がある場合。1.2の方が優れています(プログラム内のSQLトランザクションの方が優れていると思いますが、上司はデータベースでSQLトランザクションを使用したいと考えています)
最初の質問から。マスターテーブルと詳細テーブルにデータを挿入すると。
以下は私の上司のストアドプロシージャです
/li>
そして、私は次のようなデータを送信する必要があります...
同意しません。しかし、彼は「プログラムでSQLトランザクションを使いたくない」と言いました。
これをどう考えるか。そして、どちらが優れています。
sql - トリガーの使用時に SQL データベースがロックされる
デッドロックの問題があります..
データベースの更新に SQL 依存関係を提供しようとしています。
これを行うには、一連のテーブルにトリガーを作成します。テーブルが変更されると、セカンダリ テーブルの整数をインクリメントします。[dbo].[カウンター]. 次に、このテーブルに SQL 依存関係を配置して、どのテーブルがコードから更新されたかを確認します。
ただし、トリガーを配置しているターゲット テーブルはトランザクションで使用される可能性があります。その場合、トランザクションは非常に簡単にデッドロックします。
つまり、tbl1 にはカウンター テーブルを更新するための挿入/更新/削除のトリガーがあります tbl2 にはカウンター テーブルを更新するための挿入/更新/削除のトリガーがあります
トランザクション A がスレッド 1 で発生 tbl1 が変更され、カウンター テーブルの更新がトリガーされる
トランザクション B がスレッド 2 で発生 tbl2 が変更され、カウンター テーブルの更新がトリガーされ、スレッド 2 がブロックされ、スレッド 1 を待機する
一方、スレッド 1 では、トランザクション A が続行され、別のテーブル (tbl1 または tbl2) が更新されます。
ここでデッドロックが発生し、スレッドの 1 つが被害者として選択されます。
私の質問は、デッドロックの可能性を取り除くトリガーを作成するより良い方法があるかどうかです。この問題を回避するために、ASP.NET の既定の SQLDependency がどのように機能するか知っている人はいますか?
tsql - テーブル変数を使用した TSQL スコープ
テーブルのリストがあり、そのうちのいくつかには列 Employee_ID があります。少なくとも 1 つのテーブルで、少なくとも 1 つの Employee_ID が欠落しています。他のテーブルから欠落している Employee_ID を見つけたいです。
以下を実行しましたが、@temp_employees で「スカラー変数を宣言する必要があります」というエラーが表示されます。範囲は正しいと思います。
テーブル変数 @temp_employees を TSQL 内でスコープを維持しながら使用し、ループ全体で使用するにはどうすればよいですか?
注: ソフトウェアには多くのバージョンがあり、何年にもわたって多くのテーブル構造が変更されています。欠落している Employee_ID が常にソフトウェアのエラーの原因であるため、テーブル構造の変更ごとにバージョン固有のスクリプトを記述したくありません。
c# - 複数のSqlConnectionsをサポートするSqlTransaction
だから私は私がSqlConnections
すべてを1つで使用したい複数を持っていSqlTransaction
ます。私は1つの接続しか使用できないことを知っていますが、最終的には各接続にかなりの量の新しく宣言された役に立たない(接続が完了した後の)変数があり、プログラムをできるだけ高速に保つ必要があります。
using
ステートメントに各接続があります。
最新の.NETおよびSQLServer2008R2を使用しています。
出来ますか?
また、私はすでに見ました:
.NETの複数のSqlConnectionsに単一のSqlTransactionを使用するにはどうすればよいですか?
誰も質問に答えませんでした、プラットフォームは時代遅れです。