[英]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.