交易 ODBC

交易是以單一且不可部分完成的作業形式完成的工作單位;也就是說,作業的成功或失敗都是整體性的。 例如,假設您將錢從一個銀行帳戶轉到另一個銀行帳戶。 這牽涉到兩個步驟:從第一個帳戶領錢,然後將錢存在第二個帳戶中。 這兩個步驟都必須成功;無法接受一個步驟成功,而另一個步驟失敗。 支援交易的資料庫能夠保證這一點。

交易可以透過認可復原來完成。 認可交易時,該交易中所做的變更就會永久執行。 當交易復原時,受影響的資料列就會回復成交易啟動之前的狀態。 延伸帳戶轉帳的範例,應用程式會執行一個 SQL 陳述式讓第一個帳戶成為借方,並執行不同的 SQL 陳述式讓第二個帳戶成為貸方。 如果這兩個陳述式都成功,應用程式就會認可交易。 但是,如果任一陳述式因任何原因而失敗,應用程式就會復原交易。 不論是哪一種情況,應用程式都會保證交易結束時的狀態一致。

單一交易可以包含不同時間發生的多個資料庫作業。 如果其他交易具有中繼結果的完整存取權,則交易可能會互相干擾。 例如,假設有一筆交易插入資料列,有第二筆交易讀取該資料列,然後第一筆交易復原。 第二筆交易現在有資料來自不存在的資料列。

若要解決此問題,有各種配置可將交易彼此隔離。 交易隔離通常是透過鎖定資料列來實作,這可防止一個以上的交易同時使用相同資料列。 在某些資料庫中,鎖定資料列也可能鎖定其他資料列。

交易隔離的增加會降低兩個交易同時使用相同資料的並行性或能力。 如需詳細資訊,請參閱設定交易隔離等級

此章節包含下列主題。