交易種類
MicrosoftSQL Server Compact 支援兩種交易類型:明確及自動認可。
明確交易
明確地定義交易的起始及結束稱為明確交易,您可使用 SQL 陳述式或資料庫 API 函數指定明確交易。
SQL 陳述式
透過使用 Visual Studio,下列 SQL 陳述式可用於定義明確交易:
BEGIN TRANSACTION
標示連接的明確交易起始點。
COMMIT TRANSACTION
如果沒有發生錯誤,便成功結束交易。所有由交易修改的資料會成為資料庫的永久部分,並釋放交易所持有的資源。
ROLLBACK TRANSACTION
如果發生錯誤便清除交易。所有由交易修改的資料會返回交易起始時的狀態,並釋放交易所持有的資源。
ADO.NET 及 OLE DB
您也可在 ADO.NET 及 OLE DB 中使用明確交易。
在 ADO.NET 中,請使用 SqlCeConnection 物件的 BeginTransaction 方法來起始明確交易。要結束交易,請呼叫 SqlCeTransaction 物件的 Commit 或 Rollback 方法。
在 OLE DB 中,請呼叫 ITransactionLocal::StartTransaction 方法來啟動交易。呼叫 ITransaction::Commit 或 ITransaction::Abort, 方法,並將 fRetaining 設為 FALSE 以結束交易,而不自動起始另一個交易。請注意,您可以在單一 ADO.NET 連線上建立多個交易,並將其指派至個別的命令。
重要
使用 ADO.NET API 認可交易時,該交易中所有開啟的資料讀取器和結果集都應關閉。
自動認可交易
自動認可模式是 SQL Server Compact 的預設交易管理模式。每個 SQL 陳述式在完成時會被認可或回復。除非已使用明確交易覆寫此預設模式,否則 SQL Server Compact 連接以自動認可模式運作。自動認可模式也是 ADO.NET 及 OLE DB 的預設模式。
SQL Server Compact 連接以自動認可模式運作,直到 BEGIN TRANSACTION 陳述式起始明確交易為止。認可或回復明確交易後,SQL Server Compact 會返回自動認可模式。
編譯及執行階段錯誤
有別於 SQL Server,SQL Server Compact 不會以批次方式處理陳述式,SQL Server Compact 一次僅處理一個陳述式並個別執行每個陳述式。如果特定的陳述式傳回錯誤,不會影響該批次中包含的其他任何陳述式。例如,如果 Visual Studio 用於執行 SQL Server Compact 中的下列查詢集,前兩個查詢會成功,但第三個查詢會因語法錯誤而失敗。
CREATE TABLE TestData (col int);
INSERT INTO TestData VALUES (1);
INSERTT INTO TestData VALUES (1);
注意
如果這些查詢是當做一個批次傳送到 SQL Server,則所有查詢都會失敗,因為這些查詢會一起接受剖析。語法錯誤會導致 SQL Server 無法為批次建構執行計畫。
發生作業的較高階交易不會回復也不會認可交易。