使用存储过程,思路如下: 2.1 查询在借图书的在借数量 2.2 逐行读取查询结果中的书号和在借量到变量sh和zjl, 更新book表中书号等于sh的数据记录,设置 available=number-zjl; 2.3 更新book表中available字段为空的数据记录,设置 available=number; book表字段有bno,bname,number,available borrow表字段有bno,rdate 在借图书的在借数量(rdate为null表示未归还,即处于在借状态
时间: 2023-11-28 22:51:40 浏览: 68
)可以使用以下存储过程实现:
```
CREATE PROCEDURE update_available()
BEGIN
DECLARE sh VARCHAR(20);
DECLARE zjl INT;
-- 查询在借图书的在借数量
SELECT bno, COUNT(*) INTO sh, zjl FROM borrow
WHERE rdate IS NULL
GROUP BY bno;
-- 逐行更新book表中的记录
WHILE sh IS NOT NULL DO
UPDATE book SET available = number - zjl
WHERE bno = sh;
SELECT bno, COUNT(*) INTO sh, zjl FROM borrow
WHERE rdate IS NULL AND bno > sh
GROUP BY bno;
END WHILE;
-- 更新剩余的book表记录
UPDATE book SET available = number
WHERE available IS NULL;
END
```
该存储过程首先查询在借图书的在借数量,并逐行读取结果进行更新。最后,更新剩余的book表记录。
阅读全文