更新查询无法正确更新 - Oracle

时间:2011-11-05 15:15:13

标签: sql oracle oracle11g sql-update

在我之前的查询Update Query之后,我继续重写整个查询,如下所示:

表A通过[PRD_ID, PRD_VER, PY_ID, TPY_ID]上的一对多关系连接到表B,表C通过[PRD_GTIN_ID]上的一对一关系连接到表B.我需要将表A中的X,Y,Z列复制到表C中的X,Y,Z

DECLARE CURSOR eachRec IS 
SELECT  cgl.prd_gtin_id,
        tc.PRD_SPL_OR_QTY_MULTIPLE
FROM B cgl,
     A tc
WHERE cgl.prd_id       = tc.prd_id
  AND cgl.prd_ver      = tc.prd_ver
  AND cgl.py_id        = tc.py_id
  AND cgl.tpy_id       = tc.tpy_id;

BEGIN
  FOR EACH_ROW IN eachRec
  LOOP
    UPDATE C
    SET    C.PRD_ORDER_QTY_MULTIPLE=EACH_ROW.PRD_ORDER_QTY_MULTIPLE
    WHERE  C.prd_gtin_id = EACH_ROW.prd_gtin_id;
  END LOOP;
END;

除了更新正确匹配之外,查询还会更新不正确的随机行。如果有人能帮我找到我写过的查询的问题?

1 个答案:

答案 0 :(得分:1)

您真正需要的是理解密钥保留表和可更新连接视图的概念。

由于这些都是非平凡的主题,并且Oracle在文档中做了很好的工作,我只想指出相关的文档: http://download.oracle.com/docs/cd/E11882_01/server.112/e25494/views001.htm#ADMIN11782

如果您可以阅读并理解这些概念,那么使用单个更新语句执行您想要的操作不应该是一个问题,这将更清晰,更容易理解,并且更快更有效。< / p>

希望有所帮助。