• 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的记录
  • 相关阅读:
    JVM相关知识
    面试之mysql专题
    Java新特性
    数据结构操作与算法复杂度分析
    IO流
    浅谈Web安全
    面试题2
    需要知道的HTTP 知识
    How JavaScript Work
    webpack 学习笔记
  • 原文地址:https://www.cnblogs.com/txgh/p/13622003.html
Copyright © 2020-2023  润新知