如果有任何记录,我想检查表PREMIUM_SERVICE_USER
strClientID update timeValid为30,如果没有strClientID的记录插入到premium_service_user表中.
strClientID update timeValid为30,如果没有strClientID的记录插入到premium_service_user表中.
我究竟做错了什么?
它将timeValid增加30天,但也插入另一行.
SELECT @pre_var = count(*) FROM PREMIUM_SERVICE_USER WHERE strClientID = @strClientID /* bronze premium - 200 cash */ IF @Premium = 1 BEGIN INSERT INTO PREMIUM_SERVICE_USER (strClientID,timeReg,timeValid,bCurrent,durum) VALUES (@strClientID,getdate(),getdate() + 30,'1','1') UPDATE TB_USER SET cash = cash+200 WHERE strAccountID = @strClientID END IF @Premium = 1 AND @pre_var = 1 BEGIN UPDATE PREMIUM_SERVICE_USER SET timevalid = timevalid+30 where strClientID = @strClientID UPDATE PREMIUM_SERVICE_USER SET bCurrent = 1 where strClientID = @strClientID UPDATE TB_USER SET cash = cash+200 WHERE strAccountID = @strClientID END
解决方法
如果不考虑@pre_var的值,您的问题是运行第一个.
这是一个稍微不同的方式,如果PREMIUM_SERVICE_USER很大,这将略微更有效.
if @Premium = 1 begin if exists(Select 1 From PREMIUM_SERVICE_USER Where strClientID = @strClientID) BEGIN update PREMIUM_SERVICE_USER set timevalid = timevalid+30 where strClientID = @strClientID update PREMIUM_SERVICE_USER set bCurrent = 1 where strClientID = @strClientID UPDATE TB_USER SET cash = cash+200 WHERE strAccountID = @strClientID END ELSE BEGIN INSERT INTO PREMIUM_SERVICE_USER (strClientID,durum) VALUES (@strClientID,'1') UPDATE TB_USER SET cash = cash+200 WHERE strAccountID = @strClientID END end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。