gpt4 book ai didi

java - Oracle中基于rowid的更新

转载 作者:行者123 更新时间:2023-11-29 07:09:14 25 4
gpt4 key购买 nike

我想使用 oracle(11g) 中的 join 更新表值,我已使用 rowid 作为同一个表的联接参数,使用 rowid 作为联接参数是否安全。以下是我用于更新的查询,我已经在本地数据库上测试了相同的查询,它工作正常,但是是否存在可能存在 rowid 不匹配的情况?

MERGE 
INTO GEOTAG g
USING (SELECT g2.rowid AS rid, um.RETAILER_CODE
FROM GEOTAG g2
JOIN RETAILER_AD_DSE b
ON b.CODE = g2.RETAILER_CODE
JOIN USER_HIERARCHY_MASTER um
ON um.RETAILER_PRIMARY_ETOPUP = b.RETAILER_PRIMARY_ETOPUP) src
ON (g.rowid = src.rid)
WHEN MATCHED THEN UPDATE
SET g.RETAILER_CODE = src.RETAILER_CODE;

最佳答案

rowid 在表中是唯一的,因此,如果“安全”只是意味着将一行与其自身连接起来,那么,是的,这是安全的。

另一方面,您的代码似乎是一种进行相关更新的相当复杂的方法。我怀疑您只是想要这个(如果 retailer_ad_dseuser_hierarchy_master 中始终存在匹配的行,您可以省略 WHERE EXISTS)。

UPDATE geotag g
SET g.retailer_code = (SELECT code
FROM retailer_ad_dse rad
JOIN user_hierarchy_master uhm
ON uhm.retailer_primary_etopup = rad.retailer_primary_etopup
WHERE g.retailer_code = rad.code)
WHERE EXISTS (SELECT code
FROM retailer_ad_dse rad
JOIN user_hierarchy_master uhm
ON uhm.retailer_primary_etopup = rad.retailer_primary_etopup
WHERE g.retailer_code = rad.code)

关于java - Oracle中基于rowid的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40468798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com