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'

所以我必须用第二个的值更新第一个选择语句中的所有值。我尝试像这样编写更新查询:

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

这里的关系 table2.columnpk 被引用为 table1.coulmnfk。
表1.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 回答