0
select t1.columnFK from table1 t1, table2 t2 where t1.columnFK=t1.columnpk AND t2.somecolumn='value1'



select t2.columnPK from table2 t2 where t2.somecolumn='value2'

したがって、最初の select ステートメントのすべての値を 2 番目の select ステートメントの値で更新する必要があります。次のような更新クエリを書いてみました:

UPDATE table1
SET table1.columnFK = table2.columnPK
From tabel1 t1, table2 t2
Where t1.columnfk=t2.columnpk AND somevalue='value2'

次の関係は、table2.columnpk が table1.coulmnfk として参照されます。
table1.hbm.xml

<many-to-one
            name="table2"
            column="&quot;coulmnfk&quot;"
            class="table2class"
            cascade="none"/>

表 2 の関係は次のようになります。

<set name="table1" table="&quot;table1&quot;" inverse="true"  cascade="none">
                <key column="&quot;coulmnFK&quot;"/>
                <one-to-many class="table1"/>
            </set>

最初の条件をどのように含めるかわかりません。

4

1 に答える 1

1

私はあなたの参照整合性を受け入れるのは少し奇妙だと思います。通常、子テーブルfkは親pkで更新されます。

子タルブルに親pkをfkとして現在持っていて、子pkをfkとして親テーブルに追加しようとしていると仮定すると、使用する必要のあるロジックは次のとおりです...join

UPDATE parent
SET parent.childPK = child.PK    
FROM
    Parent
    JOIN
    child ON parent.PK = child.ParentPK
WHERE parent.somecolumn in ('value1','value2')
;
于 2013-01-14T14:44:27.257 に答える