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语句中的所有值。 我尝试写这样的更新查询:
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=""coulmnfk""
class="table2class"
cascade="none"/>
表2关系如下:
<set name="table1" table=""table1"" inverse="true" cascade="none">
<key column=""coulmnFK""/>
<one-to-many class="table1"/>
</set>
不确定我将如何包含第一个条件。
答案 0 :(得分: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')
;