2016-10-04 68 views
0

我在我的項目中使用Sqlite3Wrapper,我注意到一個奇怪的行爲:我開始事務並逐個執行很多查詢。我面臨的問題是日記在自動提交之前存儲最大1KB的數據。這個過程重複,直到所有的數據保存到數據庫。這是一個正常的行爲?回滾日誌存儲最大1 KB並且自動提交查詢沒有提交transcation可以嗎?

+0

「auto commitits」是什麼意思?如果真的有提交,你的顯式提交會失敗。 –

回答

0

如果你調用BEGIN,什麼都不會被COMMITED,直到您叫COMMITROLLBACK

改變數據庫(基本上除了SELECT之外的任何SQL命令)會自動啓動,如果一個交易的任何命令一個還沒有生效。自動啓動的事務在最後一次查詢完成時提交。

事務可以使用BEGIN命令手動啓動。 這樣的事務通常會持續到下一個COMMIT或ROLLBACK命令。

如果您不使用BEGIN,您將默認以自動提交模式運行。您可以通過sqlite3_get_autocommit進行檢查。

自動提交模式默認爲打開。自動提交模式由BEGIN語句禁用。通過COMMIT或ROLLBACK重新啓用自動提交模式。

+0

事情是我的db保存程序中只有2個與事務相關的成員函數:CommitTranscation和BeginTransaction。他們都使用db適配器:「m_dataBase-> execDML(」begin transaction「);」。我在他們裏面加入了斷點,但我沒有成功。但是,我可以看到很多交易 - https://embed.gyazo.com/a183859f5e65d6d97c2e289f90cda315.gif –

相關問題