如何更新舊行值。我已經使用:舊變量,但它不適合我。在我的代碼中,如果PID已經存在於項目表中,即(varProjectExists = 1),那麼我更新付款期限。現在,如果付款條件是空的,我想是飛行SQL更新語句中的新舊變量
CREATE OR REPLACE TRIGGER TRIG_PROJECT_INSERT AFTER
INSERT ON TEST_SYN_EAI_PROJECT_IN FOR EACH row DECLARE varError_Msg NVARCHAR2(100);
varSucceeded NVARCHAR2(1);
varActive_YN NVARCHAR2(50);
varProject_Id INT;
varPid INT ;
varPay_Term VARCHAR2(200);
varPay_Term1 VARCHAR2(200);
varError_id INT;
varCurr_activeyn INT;
varProjectExists NUMBER;
BEGIN
varError_Msg := 'No error';
varSucceeded := 'Y';
varError_id := 0;
varProjectExists := 0;
varPID := :new.pid;
varPay_Term := :new.ATTRIBUTE1;
varPay_Term1 := :old.ATTRIBUTE1;
varActive_YN := :new.active_yn;
varProject_ID := :new.project_id;
IF (NVL(varProject_Id,0) = 0) THEN
varError_Msg := 'project ID can not be null';
varSucceeded := 'N';
varError_id := 1;
END IF;
SELECT
CASE
WHEN (UPPER(varActive_YN) = 'ACTIVE'
OR UPPER(varActive_YN) = 'Y')
THEN 1
WHEN (UPPER(varActive_YN) = 'INACTIVE'
OR UPPER(varActive_YN) = 'N')
THEN 0
ELSE varcurr_activeyn
END
INTO varActive_YN
FROM Dual;
SELECT COUNT(1)
INTO varProjectExists
FROM project
WHERE ProjectUniversalID = varProject_ID;
IF (varProjectExists = 1) THEN
UPDATE project
SET PID = varPID,
PAYMENTTERM =
CASE
WHEN varPay_Term = 'NULL'
THEN varPay_Term1
WHEN varPay_Term IS NULL
THEN varPay_Term1
ELSE varPay_Term
END
ELSE .....
您無法更改「舊」值。你想達到什麼目的? –
無論如何,沒有'insert'觸發器的'OLD'記錄。 (好吧,但是一切都是空的)。 'OLD'和'NEW'只對'update'有意義。你期望什麼? - 你期望'varPay_Term1'被設置爲什麼,來自不同記錄的值?事實上,問題標題是指更新,但是你正在創建一個'插入後觸發器 - 你真的這是什麼意思? –
如果付款期限爲空,我想更新PROJECT表中已有的以前付款期限值,否則我需要新的付款期限來自TEST_SYN_EAI_PROJECT_IN表。我希望它澄清。 –