日期:2014-05-16  浏览次数:20626 次

求救!哪位大神会建触发器计算上机花费呀?
上机历史记录表是:
create table T_UpComputer
(
StudNum char(11)  not null, --学号
RoomNo char(10) not null, --机房号
StartTime datetime, --上机时间
EndTime datetime,  --下机时间
Cost int default 2,--花费金额
UpType nchar(10) check(UpType in ('课内上机','自由上机')),--上机形式
)
我怎么建一个触发器,自动计算出花费金额
花费金额=(下机时间-上机时间)*2
并自动更新学生表里面的余额字段。
新的余额=以前的余额-花费金额
------解决方案--------------------
看了下你的表结构,觉得有些问题。一个学生可能要上多次机,那么这个多次记录只记录一条么?建议加一个流水号,这样的话,每次上机都有记录,这样更合理些。

create trigger t_updatemoney
on T_UpComputer
for insert,update
as
begin
   update 学生表
   set 余额=余额-datediff(hh,上机时间,下机时间)*2
  from inserted join 学生表 on inserted.StudNum=学生表.StudNum
end

------解决方案--------------------
CREATE TRIGGER trgAfterRecord ON T_UpComputer
FOR INSERT
    ,UPDATE
AS
BEGIN
    UPDATE T_UpComputer
    SET Cost = datediff(hour, b.StartTime, b.EndTime) * 2
    FROM T_UpComputer a
    JOIN INSERTED b
        ON a.StudNum = b.StudNum
END