Sql server SQL SERVER存储过程库数据库最大贷款检查
我正在设计一个图书馆数据库,用户被限制在最大数量的借阅项目 我正试图编写一个程序,检查它们是否达到最大限制。 数据在两个单独的表格中:Sql server SQL SERVER存储过程库数据库最大贷款检查,sql-server,stored-procedures,Sql Server,Stored Procedures,我正在设计一个图书馆数据库,用户被限制在最大数量的借阅项目 我正试图编写一个程序,检查它们是否达到最大限制。 数据在两个单独的表格中: 用户 用户SID UsersMaxBooks(允许借阅的图书数量) 项目 ItemsID FK_UsersID 借出日期(这将填入今天借书的日期) LoanDataReturned(这将填入今天还书的日期) 我的程序是: 计算项目中的行数 其中FK_UsersID=@UsersID 贷款也不是空的 并且LoanDataReturned为空 (
用户
- 用户SID
- UsersMaxBooks(允许借阅的图书数量)
项目
- ItemsID
- FK_UsersID
- 借出日期(这将填入今天借书的日期)
- LoanDataReturned(这将填入今天还书的日期)
我的程序是:
- 计算项目中的行数
- 其中FK_UsersID=@UsersID
- 贷款也不是空的
- 并且LoanDataReturned为空
- 如果返回的行数
- 然后向项目添加新行
- ItemsID=@ItemsID
- FK_UsersID=@UsersID
- Loanadeout=今天的日期
- 否则贷款就不可能了
- 然后向项目添加新行
现在,您可以从手机中键入,以便自己清理。此外,您还需要在用户表中添加一个用户列,该列将具有某种现实世界中可读的字符串
CREATE PROCEDURE BorrowProcess (@user VARCHAR(255)) AS
BEGIN
DECLARE @userid INT = (
SELECT usersid
FROM users
WHERE User = @user
);
DECLARE @max INT = (
SELECT usermaxbooks
FROM users where userid = @userid
)
DECLARE @booksout INT = (
SELECT count(itemsid)
FROM items
WHERE dateout IS NOT NULL
AND datein IS NULL
AND fkuserid = @userid
);
IF @booksout >= @max
BEGIN
--— google raise error
END
ELSE
BEGIN
---— do INSERT
END
END
GO