我正在尝试使用 PL/SQL 制作图书馆信息娱乐系统。在你们任何人推测之前,是的,这是一项家庭作业,但我已经努力尝试并在足够努力之后才在这里提出问题。
基本上,我有几个表,其中两个是:
Issue(Bookid, borrowerid, issuedate, returndate)
和
Borrower(borrowerid, name, status)
.
表中的状态Borrower
可以是'student' or 'faculty'
。我必须使用触发器实现一个限制,即student
我在任何时间点只能发行 2 本书,并且在任何时间点只能发行faculty
3 本书。
我对 PL/SQL 完全陌生。这可能很容易,我知道如何去做。这是我能做的最好的。请帮助我查找设计/编译器错误。
CREATE OR REPLACE TRIGGER trg_maxbooks
AFTER INSERT ON ISSUE
FOR EACH ROW
DECLARE
BORROWERCOUNT INTEGER;
SORF VARCHAR2(20);
BEGIN
SELECT COUNT(*) INTO BORROWERCOUNT
FROM ISSUE
WHERE BORROWER_ID = :NEW.BORROWER_ID;
SELECT STATUS INTO SORF
FROM BORROWER
WHERE BORROWER_ID = :NEW.BORROWER_ID;
IF ((BORROWERCOUNT=2 AND SORF='STUDENT')
OR (BORROWERCOUNT=3 AND SORF='FACULTY')) THEN
ROLLBACK TRANSACTION;
END IF;
END;