我有一個單一的連接,它在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. 跨多個HTTP請求的多步數據庫事務拆分
- 3. 適用於多個MySQL數據庫模式的本地事務?
- 4. SQLite是否支持跨多個數據庫的事務?
- 5. 管理跨多個事務的SQL數據庫連接
- 6. 跨不同數據庫連接的多個SQL事務命令
- 7. 跨多個數據庫(C#)的事務處理
- 8. http事務的數據庫模式
- 9. 多個數據庫事務
- 10. 跨多個EJB的事務
- 11. 跨多個表的Azure表存儲的事務模式?
- 12. 多個數據庫的事務回滾
- 13. 多個查詢的數據庫事務
- 14. 多個公司的數據庫模式
- 15. 使用不同模式的多個數據庫的Rake任務
- 16. 來自一個SP的跨數據庫事務
- 17. ASP.NET 1.1跨越兩個數據庫的事務
- 18. 跨多個數據庫的DataContext
- 19. 跨多個活動的Android數據庫
- 20. 跨多個數據庫的Sqlite視圖
- 21. 跨多個數據庫的LINQ
- 22. 刪除跨多個數據庫的表
- 23. EF模型中的多個數據庫模式第一個
- 24. SQL服務器具有相同模式的多個數據庫
- 25. 服務層模式:跨越多個服務的業務邏輯
- 26. 從跨越多天的數據庫中獲取事件
- 27. 跨多個容器的事務控制
- 28. 跨多個JVM的事務控制
- 29. 存儲庫模式中的事務
- 30. 比較跨多個數據庫服務器的ODBC設置
您已經標記了這個問題甲骨文。您是否按照Oracle定義的術語使用術語「數據庫」?如果是這樣,就不可能有多個數據庫的單一連接。或者,使用Oracle術語,您是指在同一數據庫的兩個不同模式中修改數據的進程? – 2012-08-16 19:14:41
我指的是同一個數據庫的兩種不同模式 – BALASCJP 2012-08-16 19:21:02
好吧,我想我編輯了你的問題來澄清你在說什麼 - 請確保我已經正確理解了這個問題。 – 2012-08-16 19:25:32