オラクルアソシエーションテーブルの更新

テーブルAとテーブルBがある場合は、sqlサーバーで使用します
。updateAset field2 = b.filed2 from A、B where a.field1 = b.field1で実行するので、SQLサーバーのupdate tableステートメントに慣れてから、oracleを使用します。それは本当に厄介です。
シナリオ1:固定値のみを更新する場合、oracleサーバーとsqlサーバーの違いはそれほど大きくありません
。updateAset field2 = 'OK'
where presents (select 1 from B where a.field1 = b.field1)


シナリオ1:更新内容は、
関連付けテーブル内のoracle更新関連付けテーブルの文法が少し肥大化していることです。
update A set field2 =(select b.field2 from B where a.field1 = b.field1)
where presents (select 1 from B where a.field1 = b.field1)
サブクエリの値は、一意の値のみにすることができます。それは多値です。
さらに、オラクルはメソッドを
変更し、ビューによって簡略化しました。update(select A.field2 as Afield2、B.field2 as Bfiled2 from A、B where A.field1 = B.field1)
set Afield2 = Bfield2

シナリオ3:更新コンテンツは、関連付けられたテーブルの複数のフィールドです

シナリオ2の文法に従う場合、複数のフィールドを
更新するのは大変です。updateA set field3 =(select b.field3、b.field4 from B where a.field1 = b.field1)、field4 =(select b.field4 、b.field4 from B where a.field1 = b.field1)
where presents (select 1 from B where a.field1 = b.field1)

幸い、次の簡略化されたステートメントがあります
。updateA set(field3、field4)=(select b.field3、b.field4 from B where a.field1 = b.field1)
where presents (select 1 from B where a.field1 = b。フィールド1)

おすすめ

転載: blog.csdn.net/xiaozaq/article/details/107854208