我现在要实现这样一个操作
当某个用户的积分(用户表中的一个字段)发生变化时,先判断一下他的积分是否大于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’与查询中所用的表名或别名不匹配”?这是什么原因呢,我要实现这样一个功能,我的触发器应该怎么样写呢?不甚感激!
当某个用户的积分(用户表中的一个字段)发生变化时,先判断一下他的积分是否大于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’与查询中所用的表名或别名不匹配”?这是什么原因呢,我要实现这样一个功能,我的触发器应该怎么样写呢?不甚感激!
解决方案 »
- asp.net 关于数据库的开与关.
- sohighthesky 请进
- 郁闷,为什么自己写的代码总是调试不成功?
- 为什么没人看我的问题
- DataGrid的3层嵌套
- 有没有办法在按ie的后退按钮后,重新加载前一个页面或者直接转到某一个页面
- 高手给个解决办法啊!数据表中数据20,000条.速度问题!
- 网站用户体验 如何将客户端网页展现形式截图返回服务端
- xml文件如何删除?
- 同一个web系统部署在服务器上面,用32位系统、64位系统电脑访问出现的问题
- 弱弱的问下啊,cookie会消耗服务器资源吗?是一点都不消耗还是会消耗一些?
- 在ASP.Net中的Web.config中如何设置子目录禁止匿名用户访问啊?
select @userinfo_integral=userinfo_integral
from 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
update user_userinfo set userinfo_balance=userinfo_balance-1 ,
userinfo_integral=userinfo_integral+10
where userinfo_id=(select userinfo_id from inserted) ;
FOR UPDATE
AS
declare @userinfo_integral int ;
select @userinfo_integral=userinfo_integral 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) 还是请问各位,我现在修改成了这样,还是报错 。红色的部分报错:userinfo_integral 无效,明明在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)
FOR UPDATE
AS
declare @userinfo_integral int ;
select @userinfo_integral=userinfo_integral from user_userinfo
where userinfo_id=(select userinfo_id from deleted) ; while userinfo_integral <=0
begin
update user_userinfo set userinfo_balance=userinfo_balance-1 ,
userinfo_integral=userinfo_integral+10
where userinfo_id=(select userinfo_id from deleted)
end
我个人认为这里应该是用deleted,因为是修改之前的 userinfo_id 对吗
userinfo_integral=userinfo_integral+10
where userinfo_id=(select userinfo_id from inserted) ;