在ADO.NET中使用事務保護數據的完整性(1)
發(fā)表時間:2023-08-04 來源:明輝站整理相關軟件相關文章人氣:
[摘要]在ADO.NET中使用事務保護你數據的完整性Christa May 2004小結: 當修改數據時,事務是維護數據完整性的一個關鍵特征. 縱覽一下事務及其重要性,接下來學習如何在你的應用中使用事務保...
在ADO.NET中使用事務保護你數據的完整性
Christa May 2004
小結: 當修改數據時,事務是維護數據完整性的一個關鍵特征. 縱覽一下事務及其重要性,接下來學習如何在你的應用中使用事務保護數據.
內容
介紹
事務剖析
事務在ADO.Net中
實施事務
總結
介紹
大多數企業(yè)數據庫為了在數據修改時保證數據的完整性而提供了事務這樣一個特征. 維護數據的完整性目的是保證組織依賴數據的質量; 畢竟, 當你生成報表或進行一些數據驅動的處理, 你希望知道你操作的數據是正確的.
一個成功的事務必須通過”ACID”測試, 它必須如此:
· 原子性 – 所有在事務中的表述或者執(zhí)行正確, 或者它們全部回滾. 所有操作集合代表或完成或失敗, 而不會是剩下部分, 損壞你的數據.
· 一致性 – 所有通過事務接觸的數據在邏輯上保持一致狀態(tài). 例如, 存貨數量在一個消耗的表中, 這兒有相關的訂單消費存貨. 因此存貨不能丟失.
· 孤立性 – 事務必須在沒有干擾別的并發(fā)事務時或被別的并發(fā)事務干擾的情況下影響數. 這就阻止事務在沒有授權信息的情況下改變數據. 大部分數據庫使用上鎖保證事務的孤立性.
· 持久性 – 通過事務修改的數據是永久的, 并且會持續(xù)到系統(tǒng)失敗.
經典的例子是提交訂單和訂單系統(tǒng) – 你已經檢查了顧客的信譽等級, 創(chuàng)建了訂單記錄, 創(chuàng)建了訂單條目, 消費訂單條目從庫存中, 創(chuàng)建運輸請求, 等等. 如果這些步驟中的一步或多步失敗, 其余的將失敗, 你可以在一個孤立的,不可靠的庫存數量,或其它的記錄表格中結束數據的不一致性. 正確的使用事務阻止這種可能發(fā)生的情形. 這對于你們的DBA, 你們的公司, 和你的工作的安全性都有好處.
這就是說,記住在有必要的去使用事務. 管理事務會增加系統(tǒng)的開銷. 使用事務也會增加系統(tǒng)中鎖(或其它獨立機制,依賴數據庫)的范圍, 會導致并發(fā)問題. 考慮這些情況封裝到事務當中作為一個原子單元執(zhí)行, 考慮在執(zhí)行環(huán)境下產生的后果, 考慮部分完成時會發(fā)生什么.
事務可以使用各種原生數據庫的SQL變量在服務器端實施, , 也可以使用ado.net在應用中調用. 本文章使用ado.net數據提供對象實施數據庫事務. 我將以事務剖析為開始并且看它們是如何和你的數據庫交互的. 然后看一下.Net Framework 提供的類是如何幫助你在數據讀取代碼中實現和管理事務的, 已經它們一些使用的通常場景.