web-dev-qa-db-ja.com

データが別の/同じセッションでコミットされ、行を更新できない(Oracle SQL Developer)

グリッドを介してレコードを更新しようとすると、時々このエラーが発生します。

One error saving changes to table "SCHEMA"."TABLENAME":
Row 3: Data got committed in another/same session, cannot update row.

OTNを調べましたが、まだ解決策はありません。

オプションを無効にしようとしました行の変更時に編集を投稿でもまだ運がありません。

SQLワークシートを通じてフィールドを[〜#〜] null [〜#〜]に設定するための既知の解決策がありますが、それは確かに苦痛です。

24
MaVRoSCy

テーブルがNOROWDEPENDENCIESで作成されているため、行レベルの依存関係の追跡がオフになっており、SQL Developerが「DataEditor挿入および更新ステートメントにORA_ROWSCNを使用する」ように設定されている可能性があります。

ORA_ROWSCNオプションをオフにするか、ROWDEPENDENCIESを使用してテーブルを再作成します。

33
David Aldridge

単純な更新コマンドを実行し、cplumnをnullに設定するだけです。次に、実際の値で更新してみてください。それは間違いなく動作します。

5

"テーブル" SCHEMA "。" TABLENAME "への変更の保存中に1つのエラーが発生しました:行XX:データが別の/同じセッションでコミットされました。行を更新できません。"

複数の行の変更をコミットするときにSQL開発者にこのエラーが発生しましたが、単一の行をコミットするときは発生しませんでした。

私は行くことに修正しました:

[ツール]メニュー-> [設定]-> [データベース]-> [オブジェクトビューア]

そしてチェック:「行の変更に編集を投稿する」

ただし、別の行に移動するたびに時間がかかります(作業中のDBで1秒未満)。他の投稿から理解できることについて、セッションを変更するたびに、セッションのリモートDBが更新されています(ただし、すべてのセッションにコミットされているわけではありません)。ただし、すべてのセッションにコミットするには、明示的にコミットする必要があります。

その間、他の人が示唆したように、私は次のことを試みました:

[ツール]メニュー-> [設定]-> [データベース]-> [オブジェクトビューア]

「DataEditorの挿入および更新ステートメントにORA_ROWSCNを使用する」オプションのチェックを外します(「行の変更時に編集をポストする」のチェックも外します)。

これも機能しますが、より高速です。今では更新はローカルのみであると推測されます。別の行に移動するたびにリモートDBが更新されません。リモートDBの更新をコミットする必要がありますが、現在はエラーは発生していません。

私はこの解決策がすべてのために働くわけではないことを読みました。それは私の場合にうまくいきました:

SQL開発者バージョン:17.4.1.054、ビルド054.0712

ODAC 12.2cリリース1およびOracle Developer Tools for Visual Studio(12.2.0.1.0)(32ビット)( http://www.Oracle.com/technetwork/topics/dotnet/utilsoft-086879.html

リモートDBサーバーのバージョン:Oracle Database 11gリリース11.2.0.1.0-64ビット製品

0
Helder Daniel