我需要找出受回滚影响的行数。 我怎样才能得到这个?请帮忙。受回滚影响的行数
受回滚影响的行数
回答
实际上,受回滚影响的行数是零。这是因为在技术上,这些行在发生提交之前不会更改(A
在ACID
中)。而且,如果你回滚,提交不会发生。
我不知道的方式与Oracle做到这一点,但你可能会保持跟踪你的创建/修改/删除使用SQL%ROWCOUNT
所以你知道什么会在回滚
受到影响的行考虑一个表弗雷德有两列的两列(id,value)。 第一行是:(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;
两个记录原本在表已经更新。 1更新了两次。插入一行然后更新。然后所有这些变化都回滚了。问题是,你想要什么号码?更新的记录数,或对记录执行的更新总数。
从技术角度来看,最简单的答案是统计信息number of undo records applied。但是你必须在之前和之后进行测量。实际上,它会变得非常混乱,因为使用UPDATE语句触及并发活动时,语句可能会部分停止,回滚并重新启动。参考AskTom
+1,请注意,在递归sql回滚(例如,删除级联)的情况下撤消记录可能会引起误解。 – 2012-03-28 04:37:45
declare
i number:=0;
begin
INSERT INTO fred VALUES (1,'Red'); [inserts 1 row]
i := i + sql%rowcount;
UPDATE fred SET value = 'Blue'; [updates 3 rows but the value on 2 doesn't change]
i := i + sql%rowcount;
UPDATE fred SET id = 3 WHERE id = 1; [updates 1 row]
i := i + sql%rowcount;
if <condition> then
COMMIT;
dbms_output.PUT_LINE(i || ' rows COMMITED';
i := 0;
else
ROLLBACK;
dbms_output.PUT_LINE(i || ' rows ROLLBACK';
i := 0;
end if;
end;
欢迎来到SO,在这里,解释为什么要使用您的解决方案,而不仅仅是如何,这是一个很好的做法。这会让你的答案更有价值,并有助于读者更好地理解你是如何做到的。我还建议你看看我们的FAQ:http://stackoverflow.com/faq。 – ForceMagic 2012-10-29 15:53:34
- 1. ADODB受影响的行返回触发器的受影响的行
- 2. mysqli没有返回受影响的行
- 3. SQLite3 - 返回受影响的行
- 4. Sequlize.js:.update不返回受影响的行
- 5. 查找受影响的行
- 6. 获取受影响的行
- 7. Laravel受影响的行
- 8. Postgresql函数返回受影响的行数
- 9. Sqlite触发器受影响的行数
- 10. 获取SQL表的受影响行数
- 11. Zend计数受影响的行
- 12. HiveQL中受影响的行数
- 13. SQLPLUS不打印受影响的行数
- 14. 受影响的行数FTS查询
- 15. PDO rowCount无法返回受影响的行的正确数量
- 16. 使用cx_oracle返回MERGE中受影响的行的数量
- 17. SELECT返回的数据,但UPDATE给受影响的行:0
- 18. Opencart mysql db返回受影响的行数
- 19. 返回受UPDATE语句影响的行数
- 20. 返回受更新查询影响的行数?
- 21. 返回受多个查询影响的行数
- 22. 如何返回HANA存储过程中受影响的行数?
- 23. Postgres更新规则返回受影响的行数
- 24. 实体框架和MySQL - 受影响的行没有返回数
- 25. 在mySQL/Codeigniter中返回的行数(不受LIMIT子句影响)
- 26. 创建数据库,1行受影响
- 27. postgresql触发器与FOR EACH ROW影响不受影响的行
- 28. Laravel 5:受影响的行的MySQL
- 29. MySQL的受影响的行 - 帮助
- 30. MySQL的搜索受影响的行
需要更多的信息:你是什么意思“受影响”(c.f. paxdiablo的答案),以及为什么你需要这个? – 2010-05-25 07:06:28