Oracle 栏位级联修改

1、  方法1:

  UPDATE PUR_PO p1

   set (a, b) =

       (select p1.a - p2.total_amount, p1.b + p2.total_amount

          from PUR_ACCEPT p2

         where p1.form_no = p2.po_no

           and p2.FORM_NO = 1021

           AND p2.ACCEPT_TYPE_VALUE = 1)

 where exists (select *

          from PUR_ACCEPT p2

         where p1.form_no = p2.po_no

           and p2.FORM_NO = 1021

           AND p2.ACCEPT_TYPE_VALUE = 1);

2、  方法2:

 Merge into PUR_PO A

    Using (SELECT TOTAL_AMOUNT, PO_NO

             FROM PUR_ACCEPT

            WHERE FORM_NO = 1021

              AND ACCEPT_TYPE_VALUE = 1) B

    on (A.FORM_NO = B.PO_NO)

    when Matched then

      Update set A.a = A.a - B.TOTAL_AMOUNT, A.b = A.b + b.TOTAL_AMOUNT;

原文地址:https://www.cnblogs.com/yu-and-ze/p/4710489.html