关于SQL2000的简单问题= =

来源:百度知道 编辑:UC知道 时间:2024/06/19 10:25:51
用户表里 有 会员标志 和 会员积分 两个列。。
我想在用触发器 在会员标志发生变化的时候对该行的会员积分自动设置0或NULL。。。
下面是我写的触发器。这样写是对整个标改动了。。
问下应该怎么改 才能只对发生变化的行做响应的修改。。
---------------------------------------------------
CREATE TRIGGER 会员标志_积分 ON 用户
FOR INSERT, UPDATE, DELETE
AS
if update(会员标志) update 用户 set 会员积分=null where 会员标志=0
if update(会员标志) update 用户 set 会员积分=0 where 会员标志=1

-------------------------------------------------------------
还有一个问题
就是在一个租借表里
有一个借出时间和归还时间 都是SMALLDATETIME型的
还有个列是费用
问下后台可以实现根据借出和归还时间自动算出费用嘛?
麻烦回答的详细点 谢谢了

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我试验了一下根据你的功能要求(只要update和insert就可以了,delete没有必要了)写了下面四个触发器,建好之后就能满足你的要求了。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
***********
可以想象你更新【会员标志】的时候肯定是带着主键去操作的,假设你的表中主键叫 【用户id】,那么修改你的触发器就可以了。
***********

CREATE TRIGGER 会员标志_积分_update ON 用户
FOR UPDATE
AS
if update(会员标志) update 用户 set 会员积分=null where 会员标志=0 and 用户id=(select 用户id from deleted)
if update(会员标志) update 用户 set 会员积分=0 where 会员标志=1 and 用户id=(select 用户id from deleted)

CREATE TRIGGER 会员标志_积分_insert ON 用户
FOR INSERT
AS
update 用户 set 会员积分=null where 会员标志=0 and 用户id=(select 用户id from inserted)
update 用户 set 会员积分=0 where 会员标志=1 and 用户id=(select 用户id from inserted)

说明:
inserted 这个表中存放的就是你修改的那个数据,由于你插入的时候是主键不冲突的,所以inserted中就把主键查询出后连接到你的触发器update的sql后面就能起到只更新一条的作用了。
deleted 这个表中存放的就是你修改的那个数据,由于你修改的时候是带着主键修改的,所以deleted中就只有一条记录,这样把这条记录的主键查询出后连接到你的触发器update的sql后面就能起到只更新一条的作用了。

2、再建两个触发器实现你的第二个要求<