ロックテーブルへの更新コミットされていない鉛

更新のために選択するには、表の矛盾を引き起こして、テーブルの挿入に他のユーザーを避けるため、変更、または削除操作するために、クエリの時点でオーダーです。

シナリオ:

とき私は、更新のために使用する必要がありますか?これは、ビジネス・レベルのデータ独占権を必要とする人には、更新のために使用することを検討してください、です。現場には、そのようなチケット予約など、スタンプが画面に表示された場合、実際のチケットを実施しながら、必要性は、このデータが他のクライアントによって変更されていないものを再定義します。そのため、この確認プロセスで更新するために使用することができます。このプログラムは問題の統合ソリューションで、早期に準備する必要があります。

私たちは、更新操作を実行すると、大きな差がある普通のを選択します。一般的に選択したデータは、マルチバージョン読取り一貫性の以前のバージョンを読み取るようにアップロックされているかどうかを検討する必要はありません。更新のために追加した後、Oracleは新しいトランザクションを開始するために必要な、データをロックしてみてください。現在はロックされている場合、デフォルトの動作は避けられないを待ってブロックすることです。使用役割NOWAIT句が待機し、ロックが直接エラーを返す解除されていないときに、リソースがロックされている発見要求を避けるためです。
日常生活では、我々は更新のために使用することは、特にPL / SQLの開発データを手動で修正するように、非常に一般的です。理解の更新不足のために真の意味ながら、このとき、ちょうど、それが便利見つけます。
UPDATE文についてオラクルのレベルと範囲を改善するために、手動ロックの特殊なケースです。Oracleのロック機構は比較的良好で、データベースのロック機構の様々なタイプです。そのため、Oracleは、一般ユーザとアプリケーション制御と直接リフトロックを考慮する必要はありません。でも、このようなAのデッドロックのシナリオを考えることはほとんど手動昇降ロックに関連したロック関連の問題を、表示されます。そのため、Oracleは、毎日の使用の開発などの更新のために推奨されません。また、通常の開発・運用・保守ではなく、提出され、更新のために使用するのを忘れて、それはテーブルロックの失敗の多くの原因となります。

いくつかの例は:
更新行ロックのためのトンから選択*後のリリース、戻りクエリ結果を待ちます。これは通常、ロックが解除され、提出後に待機します。
ロックを解除するためにラインを待たないNOWAIT更新のトンから選択*、ロックプロンプトの競合は、結果が返されない
旅はまだロック、ロックプロンプトの競合をリリースしていない場合、結果は返さない、更新待ち5待機5秒間トンから選択*
から選択します*更新のためのtはロックされたクエリリターンクエリ結果をスキップしますが、レコードの行ロック無視 

SELECTを...次のようにUPDATE文の構文については次のとおりです。 
  | [column_listをする] UPDATE FOR SELECT ... [N-WAIT NOWAIT] [SKIPがロック]; 
これ: 
  句の列は、ライン上でそのターゲットの特定の列を更新されます指定します。 
  WAIT句の指定は、無期限の待機を防ぐために、秒のロックを解除するために、他のユーザのを待ちます。

利点「使用のための更新WAIT」句は次のように: 
  1が無期限にロックされた行を待つ防ぐ; 
  2以上の制御待ち時間ロックの適用を可能にします。
  3対話型アプリケーションのための非常に便利な、ユーザーがこれらの不確実なために待つことができないので、 
  あなたはスキップを使用する場合はロックされ、ロックがラインを通過することができます4、待機N「リソース忙しい」例外報告によってトリガ報告しません。

 

 

 

 

オリジナル住所ます。https://www.cnblogs.com/xiyubaby/p/4623516.html

おすすめ

転載: www.cnblogs.com/cuitang/p/12171119.html