我有三个数据库表:
Student{RollNo(primary key), Name etc.}
Book{Id(primary key),NoOfCopiesAvailable etc.}
IssuedBook{RollNo(Foreign Key referencing Student(RollNo)), Id(Foreign Key referencing Book(Id)}
现在,一个学生不能发行超过 5 本书(意味着 RollNo 不能在 IssuedBook 表中出现超过 5 次。对吗?)并且只有在 'NoOfCopiesAvailable'>0 时才能发行一本书。
所以,我写了以下触发器:
CREATE TRIGGER trigger_IssuedBook ON IssuedBook
INSTEAD OF INSERT
AS BEGIN
IF((SELECT NoOfCopiesAvailable FROM Book WHERE Id=(SELECT Id FROM INSERTED))>0 AND (SELECT COUNT(RollNo) FROM StudentBook)<5)
INSERT INTO StudentBook SELECT RollNo,Id FROM INSERTED
ELSE
//Stucked up here. Want to send a message/alert back to application(C#). Don't know how to achieve that.
END
这可以实现吗?如果是,请告诉我,如果可能,请提供编码。或者如果有任何其他方法可以解决这整个事情,那么请分享。我会非常感谢你的帮助。
谢谢你!
注意:使用 C# 编码的 Windows 窗体更新数据库,SQL Server 2008