公路工程资质等级标准:怎么用SQL做触发器

来源:百度文库 编辑:高校问答 时间:2024/05/03 10:04:49
就是当某读者还书时,能按照读者的类别判断他是否超过借书期限,超过则罚款:一天3角,自动将罚款金额进行计算,填入对应的属性里。
可以把具体的程序语言也写出来吗?

我写的,没有经过测试,仅供参考,如果不对的话请原谅

CREATE TRIGGER books_rt_upd
ON books_rt
FOR UPDATE
AS
IF UPDATE (return_date)
BEGIN

-- 定义 借书日期
declare @lend_date date
-- 定义 应还书日期
declare @return_date date
-- 定义 超出天数
declare @exday int
-- 定义 超出价格
declare @exfee decimal
-- 定义 用户id
declare @userid
-- 定义 用户id
declare @usertype

-- 修改用户归还日期,和借书的id号

select @return_date=return_date , @lendid = lendid from INSERTED

select
@lend_date=lend_date,@userid=userid ,@usertype=@usertype
from
books_rt
where lendid in (select lendid from INSERTED)

-- 计算超出多少天并乘以价格
set @exday = @return_date - @lend_date

-- 根据用户级别察看是否超过天数
IF @usertype= '01' begin
if @exday > '10' --01级别可以借书10天
begin
set @exday = @exday - 10
end
end

IF @usertype= '02' begin
if @exday > '20' --02级别可以借书20天
begin
set @exday = @exday - 20
end
end

set @exfee = @exday * 0.3

-- 修改用户帐户表
update user_account set user_fee = userfee - @exfee
where userid = @userid

END

做个UPDATE触发器,书的状态应该是个字段,当这个字段发生变化时就进行处理。