以下示例可能會爲您提供一個開始位置。
如果貸款類型屬於可調整類型,則此觸發器將有條件地更新LOANDETAILS
,僅在信用分數更新後,通過SCORECONVERSIONCHART
轉換。
首先,添加一些測試數據:
INSERT INTO CUSTOMERS VALUES ('00000000','Frodo','Baggins',null,null,null,'[email protected]',123,750);
INSERT INTO CUSTOMERS VALUES ('00000001','Chewbacca','?',null,null,null,'[email protected]',456,775);
INSERT INTO LOANDETAILS VALUES ('A',NULL,'00000000','1',NULL,NULL,7.2,NULL,NULL);
INSERT INTO LOANDETAILS VALUES ('B',NULL,'00000001','3',NULL,NULL,4.2,NULL,NULL);
INSERT INTO SCORECONVERSIONCHART VALUES ('X',500,599,22);
INSERT INTO SCORECONVERSIONCHART VALUES ('Y',600,699,3);
INSERT INTO SCORECONVERSIONCHART VALUES ('Z',700,799,1);
COMMIT;
然後創建TRIGGER
編輯假定原來的例子有每個客戶只有一個貸款。更新後處理每個客戶的多筆貸款。
CREATE OR REPLACE TRIGGER Q2
AFTER UPDATE OF CREDITSCORE
ON CUSTOMERS
FOR EACH ROW
DECLARE
V_LOAN_TYPE NUMBER;
BEGIN
UPDATE LOANDETAILS
SET RATE = (SELECT SCORECONVERSIONCHART.BASERATEADJUSTMENT + 3
FROM SCORECONVERSIONCHART
WHERE :NEW.CREDITSCORE BETWEEN SCORECONVERSIONCHART.MINSCORE
AND SCORECONVERSIONCHART.MAXSCORE)
WHERE LOANDETAILS.CUSTID = :NEW.CUSTID
AND LOANDETAILS.LOANTYPE IN ('1','2');
END;
/
然後,測試它:
SELECT CUSTID, LOANTYPE, RATE FROM LOANDETAILS;
CUSTID LOANTYPE RATE
00000000 1 7.2
00000001 3 4.2
然後,更新非信用得分屬性:
UPDATE CUSTOMERS SET STATE = 'WI';
SELECT CUSTID, LOANTYPE, RATE FROM LOANDETAILS;
CUSTID LOANTYPE RATE
00000000 1 7.2
00000001 3 4.2
然後更新信用分數。佛羅多的貸款變化(他的貸款類型是合格的)至3%+分數轉換圖調整爲3%,但Chewie's根本不動。
UPDATE CUSTOMERS SET CREDITSCORE = 600;
SELECT CUSTID, LOANTYPE, RATE FROM LOANDETAILS;
CUSTID LOANTYPE RATE
00000000 1 6
00000001 3 4.2
如果貸款類型是數字,我建議將它們記錄爲數字。
你對上述代碼有什麼問題? –