1
我有多個函數需要寫入數據庫,並且他們互相調用。到現在爲止,我一直在使用SAVEPOINT來允許嵌套事務。問題是我需要在第一個SAVEPOINT而不是默認的DEFERRED鎖上獲得一個EXCLUSIVE鎖(這是確保我以後不會被SQLITE_BUSY暫停)的鎖。因此,我想要做的事情如下:如何檢查我們是否處於SQLite事務中?
int foo(sqlite3 *db){ unsigned char wasIn = 1; if (!sqlite3_isInTransaction(db)){ sqlite3_query(db, "BEGIN EXCLUSIVE TRANSACTION"); wasIn = 0; } ...do stuff.... if (!wasIn){ sqlite3_query(db, "COMMIT TRANSACTION"); } }
任何想法如何做到這一點?