簡體   English   中英

當更新列更新另一個表中的另一列時,PL SQL觸發器

[英]PL SQL Trigger when update acolumn update another column in another table

CREATE OR REPLACE TRIGGER UPDATE_FAC_CUS_MST_MREC_TRG   BEFORE UPDATE
   OF CUST_CODE ON fac_cus_mst   FOR EACH ROW 
     DECLARE
       v_cust_code VARCHAR2(25); 
    BEGIN
       SELECT cust_code
         INTO v_cust_code 
         FROM fac_cus_mst
        WHERE cust_code = :new.cust_code;
          UPDATE money_rec
          SET cust_code = v_cust_code
         WHERE REF = :new.REF; 
   END; 
  /

我嘗試過這段代碼,但是沒有奏效,返回錯誤

10/18 PLS-00049:錯誤的綁定變量'NEW.REF'SQL> CREATE OR
在更新之前,更換觸發器UPDATE_FAC_CUS_MST_MREC_TRG 2
CUST_CODE ON fac_cus_mst 3每行4聲明5
v_cust_code VARCHAR2(25); 6開始7選擇客戶代碼8
INTO v_cust_code 9從fac_cus_mst 10在哪里
cust_code =:new.cust_code 11更新money_rec 12
SET cust_code = v_cust_code 13 WHERE REF =:new.REF; 14 END; 15 /

警告:觸發器創建時出現編譯錯誤。

SQL> show error Errors for TRIGGER UPDATE_FAC_CUS_MST_MREC_TRG:


  LINE/COL ERROR
   -------- ----------------------------------------------------------------- 4/5      PL/SQL: SQL Statement ignored 8/8      PL/SQL: ORA-00933: SQL command
   not properly ended 10/18    PLS-00049: bad bind variable 'NEW.REF'
   SQL>
   CREATE OR REPLACE TRIGGER UPDATE_FAC_CUS_MST_MREC_TRG   BEFORE UPDATE
   OF CUST_CODE ON fac_cus_mst   FOR EACH ROW 
    DECLARE
       v_cust_code VARCHAR2(25); BEGIN
       SELECT cust_code
         INTO v_cust_code 
         FROM fac_cus_mst
        WHERE cust_code = :new.cust_code;
          UPDATE money_rec
          SET cust_code = v_cust_code
        WHERE REF = :new.REF; 
END; 
/

不管顯示的錯誤是什么,觸發器都有問題。 您不能在觸發器內的同一表上寫查詢,這將導致“表正在變異”錯誤。

CREATE OR REPLACE TRIGGER UPDATE_FAC_CUS_MST_MREC_TRG   
BEFORE UPDATE
   OF CUST_CODE ON fac_cus_mst  FOR EACH ROW 
    BEGIN
          UPDATE money_rec
            SET cust_code  = :new.cust_code
         WHERE REF = :new.REF; 
   END; 
  /

您只需要一個簡單的更新語句,並直接在其中引用:new.cust_code

關於錯誤PLS-00049: bad bind variable 'NEW.REF' ,您的money_rec似乎沒有 REF列。 在其位置使用正確的列名,您的觸發器應能正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM