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.启动隐式事务相当于在写的SQL语句后加了Commit;(如果在语句中已经写了Commit;或Rollback;隐式事务可以忽略

3.连接同一TOraSession的多个数据控件,如果有AutoCommit := True和AutoCommit := False的,AutoCommit := True的执行后,相当于执行TOraSession.Commit;,可能会影响会导致AutoCommit := False也提交

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.Commit;
OraSession.Rollback;// 无法恢复DeptNo = 1和DeptNo = 2的记录

 

posted @ 2020-09-06 16:02  txgh  阅读(322)  评论(0编辑  收藏  举报