同一个存储过程,偶尔出现一两个用户数据没更新到

Mark杨 2015-12-06 11:59:59
INSERT INTO dbo.TPoint( KUserID ,FPointCount ,FPointType ,FPointDesc ,FPointTime)
VALUES(@userid,@fcount,1,'购买商品('+ CONVERT(NVARCHAR(32),@id)+')获得福分',GETDATE())
IF(@@ERROR <> 0)
BEGIN
SELECT 0,'插入福分记录',@orderNo,@id
ROLLBACK TRANSACTION
RETURN
END

UPDATE dbo.TUser SET FUserPoint = FUserPoint + @fcount,FLevelPoint = FLevelPoint + (@fcount *10) WHERE PUserID = @userid
IF(@@ERROR <> 0)
BEGIN
SELECT 0,'修改积分和福分错误',@orderNo,@id
ROLLBACK TRANSACTION
RETURN
END


这个是存储过程中的一段, 我查询了数据库,在TPoint表里面是有记录的,可是在TUser表里面,数据没有被修改到。 也就是上面那句有执行到,下面的没有。

TPoint在这个存储过程是第一次被操作到,TUser是第2次被操作到,会不会有影响? 我在本地测试了,都是正常运行的,在服务器上面,也是偶尔有那么几个人是没有更新到的。
...全文
124 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mark杨 2015-12-06
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
if @@Rowcount=0 --没有用户时,新增记录 insert into dbo.TUser(PUserID,FUserPoint,FLevelPoint) values(@userid,@fcount,@fcount*10) --加上这一段
begin try
begin tran
INSERT INTO dbo.TPoint( KUserID ,FPointCount ,FPointType ,FPointDesc ,FPointTime)
            VALUES(@userid,@fcount,1,'购买商品('+ CONVERT(NVARCHAR(32),@id)+')获得福分',GETDATE())
UPDATE dbo.TUser SET FUserPoint = FUserPoint + @fcount,FLevelPoint = FLevelPoint + (@fcount *10) WHERE PUserID = @userid
if @@Rowcount=0	--没有用户时,新增记录
insert into dbo.TUser(PUserID,FUserPoint,FLevelPoint)
values(@userid,@fcount,@fcount*10)
commit tran
end try
BEGIN CATCH
	DECLARE @ErrorMessage NVARCHAR(4000),@ErrorSeverity INT,@ErrorState INT;
	SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE();
	RAISERROR (@ErrorMessage, @ErrorSeverity,@ErrorState);
	ROLLBACK TRAN	
END CATCH
这个地方没问题,自己太大意了。 在其他不可能修改的地方,把数据给修改到了。
Mark杨 2015-12-06
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
if @@Rowcount=0 --没有用户时,新增记录 insert into dbo.TUser(PUserID,FUserPoint,FLevelPoint) values(@userid,@fcount,@fcount*10) --加上这一段
begin try
begin tran
INSERT INTO dbo.TPoint( KUserID ,FPointCount ,FPointType ,FPointDesc ,FPointTime)
            VALUES(@userid,@fcount,1,'购买商品('+ CONVERT(NVARCHAR(32),@id)+')获得福分',GETDATE())
UPDATE dbo.TUser SET FUserPoint = FUserPoint + @fcount,FLevelPoint = FLevelPoint + (@fcount *10) WHERE PUserID = @userid
if @@Rowcount=0	--没有用户时,新增记录
insert into dbo.TUser(PUserID,FUserPoint,FLevelPoint)
values(@userid,@fcount,@fcount*10)
commit tran
end try
BEGIN CATCH
	DECLARE @ErrorMessage NVARCHAR(4000),@ErrorSeverity INT,@ErrorState INT;
	SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE();
	RAISERROR (@ErrorMessage, @ErrorSeverity,@ErrorState);
	ROLLBACK TRAN	
END CATCH
不过我能确定的是,用户是存在的。 根据TPoint表的userid 我在用户表是有查询到数据的
中国风 2015-12-06
  • 打赏
  • 举报
回复
if @@Rowcount=0 --没有用户时,新增记录 insert into dbo.TUser(PUserID,FUserPoint,FLevelPoint) values(@userid,@fcount,@fcount*10) --加上这一段
begin try
begin tran
INSERT INTO dbo.TPoint( KUserID ,FPointCount ,FPointType ,FPointDesc ,FPointTime)
            VALUES(@userid,@fcount,1,'购买商品('+ CONVERT(NVARCHAR(32),@id)+')获得福分',GETDATE())
UPDATE dbo.TUser SET FUserPoint = FUserPoint + @fcount,FLevelPoint = FLevelPoint + (@fcount *10) WHERE PUserID = @userid
if @@Rowcount=0	--没有用户时,新增记录
insert into dbo.TUser(PUserID,FUserPoint,FLevelPoint)
values(@userid,@fcount,@fcount*10)
commit tran
end try
BEGIN CATCH
	DECLARE @ErrorMessage NVARCHAR(4000),@ErrorSeverity INT,@ErrorState INT;
	SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE();
	RAISERROR (@ErrorMessage, @ErrorSeverity,@ErrorState);
	ROLLBACK TRAN	
END CATCH
代码下载地址: https://pan.quark.cn/s/a4b39357ea24 基于灰度共生矩阵的图形纹理检测及路面状况的SVM分类实现 [TOC] 图像的特征提取是图像的识别和分类、基于内容的图像检索、图像数据挖掘等研究内容的基础性工作,其中图像的纹理特征对描述图像内容具有重要意义,纹理特征提取已成为图像领域研究的一个重要方法。 本项目以道路状况分类为背景,基于SVM使用纹理特征参数完成对道路状况的分类。 灰度共生矩阵的特征参数 二阶矩 对比度 相关性 熵 逆差距 实现过程 本文以识别路况为背景设计系统,首先读取图像文件,在为了得到较为理想的结果,给出的图片尺寸较小,这样的目的在于提高运行速度、能够对理想情况下的识别结果有更加精确的把握。 由于RGB图像的体积较大,但另一方面我们也知道,一张图片也可以用其灰度图像来反映,因此,对目标图像进行灰度的转化,可以降低对设计复杂度和运行效率的要求。 尽管灰度转化后可以有效的降低图片的大小,但是对于256灰度级的图片仍然会给处理带来一些时间上的消耗,因此需要在保持原图像信息不变的情况下大量削减灰度级,通过对图像进行直方图均衡化处理,增加灰度值的动态范围,从而增加图像的整体对比效果。 通常,需要将每个扫描的方向所计算的特征参数计算出来作一个权衡,这样能够更好地综合影响因素,一般会将每个方向的特征参数计算出来取平均,这样就可以以一个综合的指标来识别图像了。 把所有的设计思路综合起来,可以用下图所示的系统设计框图来反映。 png 分类结果 通过样本标签和分类后的标签对比,得出使用能量和对比度作为训练分类器的样本,分类器对于实验待分类样本分类的其正确率为:95%,由此可以看出,这个分类器对于道路状况的分类仍然具有一定的意义。 pn...

22,297

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧