首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

问一个简单的触发器有关问题 SQL2000

2011-12-29 
问一个简单的触发器问题 SQL2000我现在要实现这样一个操作当某个用户的积分(用户表中的一个字段)发生变化

问一个简单的触发器问题 SQL2000
我现在要实现这样一个操作
  当某个用户的积分(用户表中的一个字段)发生变化时,先判断一下他的积分是否大于0,如果积分不是大于0 ,则减去一个企业币已获得10个积分。。。。。

具体情况:用户表 user_userinfo  
  积分字段:userinfo_integral
  企业币字段: userinfo_balance
   

  我是这样写的:
  CREATE TRIGGER updateBtoA ON [dbo].[user_userinfo]  
  FOR UPDATE  
  AS  

declare @userinfo_integral int ;
select @userinfo_integral=userinfo_integral where userinfo_id=deleted.userinfo_id ;

if(@userinfo_integral<=0)

update user_userinfo set userinfo_balance=userinfo_balance-1 ,
userinfo_integral=userinfo_integral+10
where userinfo_id=inserted.userinfo_id ;

go

但是这个触发器报错呀,说“列前缀‘inserted’与查询中所用的表名或别名不匹配”?这是什么原因呢,我要实现这样一个功能,我的触发器应该怎么样写呢?

不甚感激!

[解决办法]

C# code
select @userinfo_integral=userinfo_integralfrom user_userinfo  where userinfo_id=deleted.userinfo_id if(@userinfo_integral <=0) update user_userinfo set userinfo_balance=userinfo_balance-1 , userinfo_integral=userinfo_integral+10 where userinfo_id=inserted.userinfo_id ; go
[解决办法]
SQL code
update user_userinfo set userinfo_balance=userinfo_balance-1 , userinfo_integral=userinfo_integral+10 where userinfo_id=(select userinfo_id from inserted) ;
[解决办法]
原来是掉了from "table_name"
[解决办法]
lter TRIGGER updateBtoA ON [dbo].[user_userinfo]
FOR UPDATE
AS
declare @userinfo_integral int ; 
select @userinfo_integral=userinfo_integral from user_userinfo
where userinfo_id=(select userinfo_id from inserted) ; 

if(@userinfo_integral <=0) 


update user_userinfo set userinfo_balance=userinfo_balance-1 , 
userinfo_integral=userinfo_integral+10 
where userinfo_id=(select userinfo_id from inserted)
[解决办法]
update user_userinfo set userinfo_balance=userinfo_balance-1 , 
userinfo_integral=userinfo_integral+10 
where userinfo_id=(select userinfo_id from inserted) ;

热点排行