操作の結果をマージとしてはORA - 30926エラー

にORA - 30926エラーは、通常、 マージが発生したときは、操作およびいませんが起こっている記入した情報〜についてものではないが、通常のことです、それはの説明については、以来、見当違いの多少私たちを残し:
にORA - 30926:表のソース内の行の9月に安定することができない取得します。

通常、このエラーは、 テーブルのソースが発生したとき動作が差し込み印刷での行よりも更新の下に彼にもっとするターゲット行エンジンがエラーを返すを選択するレコードを分かっていないように。これは、テーブルのソースに重複されている問題。

例:

  • 我々は:
    TABLA_ORIGEN値を持つ
    ID説明
    1'最初の値は'
    1'idの値が倍に'
    2'別の値' と値を持つTABLA_DESTINO
    ID説明
    1'の値を更新する'
    2'このれませんトラブル'
    3'これは、同じまま'
  • 我々は、ステートメントを次の使用したいマージ

マージdestにTABLA_DESTINO
博多織TABLA_ORIGENを用いた
)がON(dest.ID = ori.ID
ときに一致し、[更新のSET a.Descripcion = b.Descripcion;

このデータを使用して我々はTABLA_ORIGENに次のエラーが出ます:
ORAは- 30926:失敗した表のソース行のセットを安定を得る

  • 我々は3つのオプションがありますこのエラーを考える: 1 -.ソーステーブルからレコードを重複排除:

TABLA_ORIGENにDELETE FROMは、WHERE説明ID = 1のアンド='idの値が倍に'

2 - であるレビュー私たちが参加する主な方法は、マージ:

とする場合は、リンクフィールドを上に説明するにも宛先がそれぞれする唯一のレコードソースまたはことがゼロ:

マージdestにTABLA_DESTINO
博多織TABLA_ORIGENを用いた
)がON(AND検索のdest.Descripcion ori.ID dest.ID =博多織。概要
ときに一致し、[更新のSET a.Descripcion = b.Descripcion;

(表だけでこれらの2つのフィールドであるため、この例では、あまり意味をなさないもマッチを見つけることができなかった参加)

3 -.マージは、代わり使用してUPDATE結合とヒント/ * + BYPASS_UJVC *は/エンジンを検証してスキップし、指を交差あなた:

更新/ * + BYPASS_UJVC * /
(セレクトori.ID ori_ID、
&Nbの
属; ori.Descripcionのori_Descripcion、
dest.ID dest_ID、
dest_Descripcionのdest.Descripcion
からTABLA_ORIGEN博多織、destがTABLA_DESTINO
のWHERE ori.ID = dest.ID)
のSET dest_Descripcion = ori_Descripcion;

明らかに最も推奨される第1または第2の、必要に応じています。