1. 程式人生 > 實用技巧 >delphi使用ODAC控制元件事務處理(自動提交)

delphi使用ODAC控制元件事務處理(自動提交)

ODAC中事務處理(自動提交模式)

使用AutoCommit屬性,可以在不顯式呼叫Commit或Rollback方法的情況下,啟動隱式事務(自動提交)。

將AutoCommit設定為True時,在每次資料庫訪問後隱式呼叫Commit方法。

TOraSesion中的AutoCommit屬性指定連線當前Session的資料控制元件是否隱式提交。預設值為True。

繼承自TCustomDADataSet和TCustomDASQL類的元件(OraQuery 、TOraSQL、TOraStoredProc等)都有AutoCommit屬性,可以指定其隱式事務,預設值為True。

property AutoCommit: boolean;  //自動提交

備註

1.TOraSession中的AutoCommit屬性和連線當前Session的資料控制元件的AutoCommit屬性都為True時,才能隱式提交。

2.啟動隱式事務的資料控制元件,擁有獨立事務,不受TOraSession操作事務方法(Commit;Rollback;ApplyUpdates;等)的影響

3.啟動隱式事務相當於在寫的SQL語句後加了Commit;(如果在語句中已經寫了Commit;或Rollback;隱式事務可以忽略

OraSQL.Session := OraSession;
OraSession.AutoCommit := True;
OraSQL.AutoCommit :
= False; OraSQL.SQL := 'DELETE FROM Dept'; OraSQL.Execute; // 刪除所有記錄,不執行提交 OraSession.Rollback;// 恢復已刪除的記錄 OraSession.AutoCommit := False; OraSQL.AutoCommit := True; OraSQL.SQL := 'DELETE FROM Dept'; OraSQL.Execute; // 刪除所有記錄,不執行提交 OraSession.Rollback; // 恢復已刪除的記錄 OraSession.AutoCommit := True; OraSQL.AutoCommit :
= True; OraSQL.SQL := 'DELETE FROM Dept'; OraSQL.Execute; // 刪除所有記錄,執行提交 OraSession.Rollback; // 無法還原已刪除的記錄
OraSQL1.Session := OraSession;
OraSQL2.Session := OraSession;
OraSession.AutoCommit := True;
OraSQL1.AutoCommit := False;
OraSQL2.AutoCommit := True;
OraSQL1.SQL := 'DELETE FROM Dept WHERE DeptNo = 1'; 
OraSQL1.Execute;         // 刪除DeptNo = 1記錄,不執行提交
OraSQL2.SQL := 'DELETE FROM Dept WHERE DeptNo = 2'; 
OraSQL2.Execute;         // 刪除DeptNo = 2記錄,執行提交
OraSession.Rollback;// 恢復DeptNo = 1的記錄,無法恢復DeptNo = 2的記錄