【发布时间】:2015-12-08 02:14:57
【问题描述】:
此触发器在 date_returned 列更新时执行。触发器应该计算罚款并更新借款人表中借款人的未偿罚款。每晚一天罚款 5 美元。
我的桌子:
DROP TABLE Loan_Transaction;
DROP TABLE Borrower;
CREATE TABLE Borrower (
Borr_ID NUMBER (4) PRIMARY KEY,
borr_name VARCHAR2 (25) not null,
borr_address VARCHAR2 (50) not null,
borr_city VARCHAR2 (15) not null,
phone VARCHAR2 (8),
borr_type VARCHAR2 (2),
books_on_loan NUMBER(1),
outstanding_fines NUMBER (6,2),
check (borr_type in('R','NR','S')),
check (books_on_loan <10)
);
CREATE TABLE Loan_Transaction (
loan_ID NUMBER (9) PRIMARY KEY,
Borr_ID NUMBER (7) REFERENCES Borrower,
Item_Copy_ID NUMBER (7),
loan_type VARCHAR2 (1),
loan_date DATE,
due_date DATE,
date_returned DATE,
check (loan_type in('O','R'))
);
到目前为止我所拥有的......
CREATE OR REPLACE TRIGGER fines
BEFORE UPDATE ON Loan_Transaction
FOR EACH ROW
DECLARE fine_amt NUMBER;
BEGIN
SET fine_amt = (loan_date - date_returned) * 5
UPDATE Borrower b
SET outstanding_fines = (outstanding_fines + fine_amt);
END;
/
这是错误:ORA-24344: 编译错误成功
【问题讨论】: