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