oracle数据库事务相关【weber出品必属精品】

本文深入探讨了数据库事务的概念,包括事务的开始与结束条件,以及如何通过DDL、DCL语句进行数据操作。通过实例展示了事务的保存点机制,以及如何利用事务回滚来维护数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 事务的概念:
    事务:一个事务由一组构成一个逻辑操作的DML语句组成

    事务有开始有结束,事务以DML语句开始,以Conmmit和Rollback结束。
    以下情况会使得事务结束:

    1. 执行COMMIT 或者 ROLLBACK 语句

    2. 执行DDL或者 DCL语句

    3. 用户退出

    4. 系统崩溃

  2.  一个事务可以包含下列语句:

    1. 对数据做出一致性修改的DML语句

    2. 一个 DDL 语句

    3. 一个 DCL语句

  3.   DDL与和DCL语句执行的过程:

    1. 首先发出COMMIT;

    2. 执行对数据字典的DML操作

    3. 如果成功,commit,如果失败,rollback

  4.  保证数据的一致性:没有提交的数据,其他的用户看不到

    在数据永久改变之前,检查数据的改变

    对逻辑相关的操作进行分组

  5.  控制事物:保存点(savepoint)
  6. SQL> select * from t;
     
    EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------
     7369 ALLEN  SALESMAN   7902 17-DEC-80  1600           20
        1 y                                  100
        2 w                                  100
     
    SQL> savepoint s1;
     
    Savepoint created.
     
    SQL> insert into t (empno,ename) values(3,'b');
     
    1 row created.
     
    SQL> savepoint s2;
     
    Savepoint created.
     
    SQL> delete t;
     
    4 rows deleted.
     
    SQL> select * from t;
     
    no rows selected
     
     
    SQL> rollback to savepoint s2;
     
    Rollback complete.
     
    SQL> select * from t;
     
    EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------
     7369 ALLEN  SALESMAN   7902 17-DEC-80  1600           20
        1 y                                  100
        2 w                                  100
        3 b                                  100
     
    SQL> rollback to savepoint s1;
     
    Rollback complete.
     
    SQL> select * from t;
     
    EMPNO ENAME  JOB         MGR HIREDATE    SAL  COMM DEPTNO
    ----- ------ --------- ----- --------- ----- ----- ------
     7369 ALLEN  SALESMAN   7902 17-DEC-80  1600           20
        1 y                                  100
        2 w                                  100
     
    ----这里要注意了啊,因为rollback到了的s1这个保存点,也就不可以在rollback到s2这个保存点---因为s1中这个保存点没有记录到s2保存点的信息----
    SQL> rollback to savepoint s2;
    rollback to savepoint s2
    *
    ERROR at line 1:
    ORA-01086: savepoint 'S2' never established

     

  7.  
  8.  

转载于:https://www.cnblogs.com/yaoweber/p/3925589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值