問題タブ [select-for-update]

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.

0 投票する
0 に答える
35 参照

python - 最も関連性の高いものをフィルタリングして 1 つのクエリで作成する方法は?

競合状態を回避するために、最適な関連オブジェクトを選択し、新しいオブジェクトを 1 つのクエリで保存したいと考えています。出来ますか?select_for_update はこの問題を解決しますか?

0 投票する
1 に答える
146 参照

mysql - SELECT FOR UPDATE はトランザクションなしでは意味がなく、トランザクションはそれ自体でロックを使用するため、SELECT FOR UPDATE のユースケースは何ですか?

ここから: https://stackoverflow.com/a/27868682/10894456

SELECT ... FOR UPDATE は、トランザクションが完了する (コミットまたはロールバックされる) まで、書き込み (排他的) ロックでレコードをロックします。

レコードを選択し、更新するまで変更されないようにするには、トランザクションを開始し、SELECT ... FOR UPDATE を使用してレコードを選択し、簡単な処理を行い、レコードを更新してから、トランザクションをコミット (またはロールバック) します。 .

ここで https://stackoverflow.com/a/5411366/10894456

トランザクション外の FOR UPDATE は無意味であることに注意してください

したがって、INSERT FOR UPDATE はトランザクションなしでは意味がなく、トランザクションはそれ自体でロックを使用するため、INSERT FOR UPDATE のユースケースは何ですか? 私の唯一の推測: SELECT ... FOR UPDATE は、トランザクションの分離レベルが低い場合 (read_uncommit など) にのみ意味がありますが、よくわかりません。助けてください

0 投票する
1 に答える
159 参照

mysql - 存在しない行に対する SELECT … FOR UPDATE

「存在しない行を更新するために...を選択する」ときのロックに興味があります。現在、テーブル「test02」のデータは次のとおりです。

ID

1

3

8

15

20

列 ID は主キーです。

私が実行するとき:

session1: トランザクションを開始します。select * from test02 where id = 7 for update;

次に、別のセッションを開き、フェローとして実行します。

session2: トランザクションを開始します。select * from test02 where id = 7 for update;

予想通り、session2 はギャップ ロック (3, 8) を待機します。ただし、2 つのセッションは正常に実行されます。session2 が待機しない理由を説明できる人はいますか?

しかし、セッション 3 で次の SQL を実行すると、test02(id) 値 (7) に挿入されます。セッションがブロックされている場合、セッション 1 のギャップ ロックが使用されていることを意味します。しかし、session2が正常に実行できる理由がわかりません。

mysql バージョン 5.7 と 5.8 はどちらも同じ結果を示します。

0 投票する
1 に答える
1279 参照

oracle - ORA-20762: エラー-01002: ライン・プロシージャで順序が正しくないフェッチが発生しました

スケジューラ ジョブ (手順) があります。このスケジューラ ジョブは問題なく実行されるはずです。ロジックに従って動作します。このプロシージャには入力パラメータがありません。データをフェッチする3〜4個のカーソルがあり、同じテーブル条件でカーソルが機能するように更新します。問題は... シナリオを教えてください。プロシージャ内に「サンプル」というテーブルがあるとします。カーソルを使用してレコードを取得し、「サンプル」テーブルの値を更新するだけで、次にコミットしてカーソルのループを終了します。plsql 開発者 IDE を使用しています。select val1,val2 from sample where val3='A' for update;ジョブ、つまりプロシージャの実行と同時にコミットボタンをクリックせずにplsql開発者ideを入力して、カーソルでフェッチされた同じレコードとしてテーブル「サンプル」からデータにアクセスしようとしています 。ORA-20762: Error-01002: fetch out of sequence encountered on line procedure エラーが指すエラーがスローされますfetch cursor into ..'FOR UPDATE NOWAIT'

0 投票する
1 に答える
123 参照

group-by - Axapta: Group By 句の後の「The record has never been selected」エラー

私は Ax 2009 の初心者です。別のテーブル B に参加した後、テーブル A のレコードのフィールドを更新したいと考えています。その ID でグループ化を適用したいと考えています。

次のコードを実行しようとしましたが、「テーブル A のレコードを編集できません。レコードが選択されていません」というエラーがスローされます。

tableA で Group By 句を使用したことが原因だと思いますが、それを削除すると、if チェックで tableA.Dimension[5] が空になります。

誰か助けてください。ありがとうございました。