日期:2014-05-17  浏览次数:20800 次

如何用SQL语句满足这条业务规则!!
有以下这个table:

借书记录(读者编号,书编号,借出时间,应归还时间,实际归还时间,欠费)

业务规则:

规定,对于每一条借书记录,如果当下的时间( getdate() ) > 应归还时间 ,则自动修改欠费的数据,

欠费=0.01*(归还时间-当下时间)。如果读者已经归还了图书,也就是“实际归还时间”不为空,则“欠费”自

动停止计费。


备注:读者借书的时候,往借书记录中插入“读者编号”“书编号”“借出时间”“应归还时间”。“实际归还时间”和“欠

费”默认值为NULL。还书的时候,就修改实际归还时间。

请问:
     如何用SQL语句满足上面的业务规则??


------解决方案--------------------

UPDATE TALBE
SET 实际归还时间 = getdate()
欠费=0.01*(getdate()-应归还时间)
where 读者编号 = @读者编号
and 书编号 = @书编号
and 借出时间 = @借出时间

------解决方案--------------------

update table
set 欠费 = 0.01*(getdate()-应归还时间) 
where  getdate()>应归还时间 and 实际归还时间 is null 

------解决方案--------------------
引用:
让系统自动完成的有三件事:

1、自动检测是否达到欠费的条件;

2、自动更新“借书记录”中的欠费信息;

3、当还书成功之后,也就是往“借书记录”表中更新了“实际归还时间”信息之后,自动停止欠费的计算

其实你在访问数据的时候

select 的时候计算出来这些值就可以了

等到归还了 改一下属性就可以了。