我需要找出受回滾影響的行數。 我怎樣才能得到這個?請幫忙。受回滾影響的行數
受回滾影響的行數
回答
實際上,受回滾影響的行數是零。這是因爲在技術上,這些行在發生提交之前不會更改(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. Sequlize.js:.update不返回受影響的行
- 3. SQLite3 - 返回受影響的行
- 4. mysqli沒有返回受影響的行
- 5. 查找受影響的行
- 6. 獲取受影響的行
- 7. HiveQL中受影響的行數
- 8. SQLPLUS不打印受影響的行數
- 9. 受影響的行數FTS查詢
- 10. PDO rowCount無法返回受影響的行的正確數量
- 11. 使用cx_oracle返回MERGE中受影響的行的數量
- 12. SELECT返回的數據,但UPDATE給受影響的行:0
- 13. 返回受UPDATE語句影響的行數
- 14. Opencart mysql db返回受影響的行數
- 15. Postgres更新規則返回受影響的行數
- 16. 在mySQL/Codeigniter中返回的行數(不受LIMIT子句影響)
- 17. 返回受更新查詢影響的行數?
- 18. 創建數據庫,1行受影響
- 19. postgresql觸發器與FOR EACH ROW影響不受影響的行
- 20. Laravel 5:受影響的行的MySQL
- 21. MySQL的搜索受影響的行
- 22. 如何獲取Zend_DB_table的受影響行?
- 23. MySQL的row_count()行受到影響
- 24. Spring Data Cassandra - 檢索受影響的行
- 25. 選擇受更新影響的行
- 26. 受影響的行實體框架
- 27. 受影響的行ActiveRecord :: Base.connection.execute與Postgres
- 28. phpMyAdmin顯示受影響的行= 0
- 29. 從PL-SQL獲取受影響的行
- 30. ezSQL檢查受影響的行
需要更多的信息:你是什麼意思「受影響」(c.f. paxdiablo的答案),以及爲什麼你需要這個? – 2010-05-25 07:06:28