|
建一个存储过程: create proc xxx @a int, @b int AS begin tan insert into table(......)values(......) update table set ...... commit tran 执行: set xact_abort on --ON: 自动回滚当前事务 go exec xxx 1,1 go 如果select * from table,已经能够看到新添加的数据, 在什么情况下还会再回滚呢? 在我开发的一个软件中,把商品出库的单据保存并减少库存数量之后, 再查询时已经能够看到销售的单据,但是不知道为什么,后来查询却再也看不到这笔单据, 而且库存数量也未减少。感觉好像是回滚了一样。 请哪位高手帮忙分析一下。谢谢了。
这个问题第1个回答:
commit之后.不会再回滚.
这个问题第2个回答:
按道理讲,应该不会再回滚,可我就是想不出来到底会在哪儿出错了? 按说已经查询时已经能够看到结果,基本上不会再出现什么问题了吧, 请一楼小梁同志再帮我考虑一下,看看这种现象会在哪儿出了问题。
这个问题第3个回答:
看看日志有没有记录.
这个问题第4个回答:
不会
这个问题第5个回答:
以前已经发生过一次,也没有查出来是怎么回事。 今天还没有到客户那儿去看过, 不过以前那次看过日志,没有发现什么异常的东西。
这个问题第6个回答:
[size=11px]既然设置了自动回滚,是否遇到没有料到或者非技术的异常,应该会有回滚,建议查看下日志,也许能找到问题所在。[/size]
这个问题第7个回答:
你的软件有错,没写入.
这个问题第8个回答:
???
这个问题第9个回答:
依旧郁闷中
这个问题第10个回答:
看看你的版本是多少,是否装过sp
这个问题第11个回答:
现在已经打了SP4了,不知道以后还会不会出现这种情况。 据我所知,已经是第三次发生这种情况了。 让我理解不了的是:已经在查询中可以看到结果了,为什么还会恢复至原样呢? COMMIT TRAN 后不是已经永久性保存了结果了吗?
|