受回滚影响的行数

pay*_*yal 3 oracle plsql

我需要找出受回滚影响的行数.我怎么能得到这个?请帮忙.

Gar*_*ers 6

考虑一个带有两列(id,value)和两行的表fred.第一行是(1,'蓝'),第二行是(2,'蓝')

我发表以下声明

INSERT INTO fred VALUES (1,'Red'); [inserts 1 row]
UPDATE fred SET value = 'Blue';    [updates 3 rows but the value on 2 doesn't change]
UPDATE fred SET id = 3 WHERE id = 1; [updates 1 row]
ROLLBACK;
Run Code Online (Sandbox Code Playgroud)

表中最初的两条记录都已更新.1更新了两次.插入一行然后更新.然后所有这些变化都被回滚.问题是,你想要几号?更新的记录数,或对记录执行的更新总数.

从技术角度来看,最简单的答案是应用撤消记录的统计数量.但是你必须在前后测量它.实际上,它会变得非常混乱,因为使用UPDATE语句命中并发活动,语句可能会在中途停止,回滚并重新启动.参考AskTom


pax*_*blo 5

实际上,受回滚影响的行数为零.这是因为从技术上讲,直到提交发生(Ain ACID)才会更改这些行.而且,如果你回滚,提交不会发生.