我有一個單一的連接,它在Oracle數據庫的兩個不同模式的對象上執行DML。我完成了涉及schema A
中的對象的事務,然後開始第二個事務以處理schema B
中的對象。如果在第二個事務中工作時發生任何錯誤,我想回滾這兩個事務的更改。那可能嗎?跨數據庫中的多個模式的事務
回答
如果您想把對兩種模式中所做的更改被提交或回滾在一起,你需要使用一個單一的交易。一旦你提交了第一筆交易,如果第二筆交易失敗,你就不能再回滾它(可能的話,你可以使用閃回技術,但它更多地涉及方式)。但是,如果您在兩個模式中使用單個事務處理您所做的工作,則會得到您希望所有更改都將以原子方式提交或回滾的行爲。
設置你的Connection
所以它不會自動提交(其中它在默認情況下),例如:
conn.setAutoCommit(false);
然後你就可以對第一個模式運行DML,並使用相同的連接對象,運行鍼對第二個模式的DML。如果事情失敗,滾一切恢復,e.g:
conn.rollback();
否則,如果一切完成,提交:
conn.commit();
GriffeyDog我們不能訪問兩個架構與單一的連接,但我們可以通過單一的交易實現它好的,如果我錯了。 – BALASCJP 2012-08-16 20:35:08
好的,所以您聽起來像是直接連接到兩個模式中的每一個,並使用JDBC數據庫連接。我建議設置一個單獨的模式,您的應用程序可以使用該模式連接到Oracle數據庫,併爲您需要訪問的任何數據庫對象的現有兩個模式授予適當的特權,以根據需要創建同義詞。那麼你將只需要一個JDBC連接。 – GriffeyDog 2012-08-17 14:19:57
- 1. 跨多個數據庫的SQL事務
- 2. 適用於多個MySQL數據庫模式的本地事務?
- 3. 跨不同數據庫連接的多個SQL事務命令
- 4. 管理跨多個事務的SQL數據庫連接
- 5. SQLite是否支持跨多個數據庫的事務?
- 6. 多個數據庫事務
- 7. 多個查詢的數據庫事務
- 8. 使用不同模式的多個數據庫的Rake任務
- 9. ASP.NET 1.1跨越兩個數據庫的事務
- 10. 來自一個SP的跨數據庫事務
- 11. 跨多個數據庫的LINQ
- 12. 跨多個數據庫的DataContext
- 13. 跨多個活動的Android數據庫
- 14. 刪除跨多個數據庫的表
- 15. EF模型中的多個數據庫模式第一個
- 16. 跨多個JVM的事務控制
- 17. 使用TransactionScope的一個事務中的多個數據庫(多個DbContexts)。
- 18. 比較跨多個數據庫服務器的ODBC設置
- 19. 存儲庫模式中的事務
- 20. Korma中有多個數據庫的事務代碼
- 21. 多服務層和數據庫事務
- 22. 搜索多個模式或數據庫
- 23. 使用多個數據庫(DAO模式)
- 24. 數據庫模式多個類別
- 25. JPA使用多個數據庫模式
- 26. MVC跨多個模型的事務性PDO
- 27. 爲數據庫模式中的多個Id分配一個值
- 28. 用於在數據庫之外實現事務的模式
- 29. 單個連接上的多個數據庫事務
- 30. 從單個數據庫中的多個模式中檢索數據
您已經標記了這個問題甲骨文。您是否按照Oracle定義的術語使用術語「數據庫」?如果是這樣,就不可能有多個數據庫的單一連接。或者,使用Oracle術語,您是指在同一數據庫的兩個不同模式中修改數據的進程? – 2012-08-16 19:14:41
我指的是同一個數據庫的兩種不同模式 – BALASCJP 2012-08-16 19:21:02
好吧,我想我編輯了你的問題來澄清你在說什麼 - 請確保我已經正確理解了這個問題。 – 2012-08-16 19:25:32