delphi使用ODAC控制元件事務處理(自動提交)
阿新 • • 發佈:2020-09-06
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的記錄