现象貌似事务未提交,但数据又变更过了
上午有发生灵异事件
同一条UPDATE语句,同事更新两个字段,有一个字段更新成功,另一字段未更新成功
Update tuser set state=1 ,operator='xgg' where vchno=2034134
整个处理逻辑执行成功,但数据库里只看到state记录更新成功了,operator没有更新成功
抓取了数据库的快照,中间没有任何异常发生,程序也没发生任何异常
程序处理流程如下 :
第一步:
update tlog set operator='xgg' where id=2034134
第二步:
Update tuser set state=1 ,operator='xgg' where vchno=2034134
之后完成,事务提交
现在数据库的现象是tlog表未更新
tuser 表的state字段更新了,operator字段未更新
[解决办法]
--#1.我只能说,不可能
--#2.楼主把所有的语句放到TRY...CATCH...中,测试是否会有异常产生。如果没有,参考#3
--#3.用下面代码测试:
BEGIN TRY
BEGIN TRAN
select operator FROM tlog where id=2034134--旧数据
update tlog set operator='xgg' where id=2034134
select operator FROM tlog where id=2034134--新数据
SELECT [state],operator FROM tuser where vchno=2034134 --旧数据
Update tuser set [state]=1,operator='xgg' where vchno=2034134
SELECT [state],operator FROM tuser where vchno=2034134 --新数据
COMMIT
END TRY
BEGIN CATCH
SELECT 'have a error:' + ERROR_MESSAGE()
END CATCH