我正在尝试使用PL/SQL制作库信息娱乐系统。在你们任何人推测之前,是的,这是一项家庭作业,但我努力尝试并在努力尝试之后在这里提出问题。PL/SQL触发器库信息娱乐系统
基本上我有几张表,其中有两张是: Issue(Bookid, borrowerid, issuedate, returndate)
和 Borrower(borrowerid, name, status)
。
Borrower
表中的状态可以是'student' or 'faculty'
。我必须使用触发器实施限制,根据student
,我可以在任何时间点和任何时间点根据faculty
发行2本书,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;
非常感谢您的努力。只有一个问题 - 在任何表格中都没有列为“borrowercount”。我怀疑这是否会奏效。 –
你应该采取计数,并将其作为参数:)这不是一个简单的答案,但只有一个模型 – SriniV