Oracle事物

来源:互联网 发布:淘宝无线端与app 编辑:程序博客网 时间:2024/05/22 02:05
一,事务的定义:
    事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。
    经典案例:银行转账。
 
二,事务的特性(ACID): 
    1、原子性 (Atomicity)    
       事务的原子性是指事务中包含的所有操作要么全做,要么不做 , 也就是说所有的活动在数据库中要么全部反映 ,    要么全部不反映 , 以保证数据库的一致性。
    2、一致性 (Consistency)
       事务的一致性是指数据库在事务操作前和事务处理后 , 其中数据必须满足业务的规则约束。
     3、隔离性 (Isolation)
       隔离性是指数据库允许多个并发的事务同时对其中的数据进行读写或修改的能力 , 隔离性可以防止多个事务的并发执行时 , 由于它们的操作命令交叉执行而导致数据的不一致性。
     4、持久性 (durability)
       事务的持久性是指在事务处理结束后 , 它对数据的修改应该是永久的。即便是系统在遇到故障的情况下也不会丢失 , 这是数据的重要性决定的。
 
三,事务与锁:
   当执行事务操作时(DML语句),oracle会在被修改的表上加锁,防止其他用户修改表的结构,这对我们用户来说
 是非常重要的。
 
四,事务的回滚与提交:
      1,显式提交
      1) commit:用于提交事务,当执行commit语句之后,会确认事务的变化,结束事务,删除保存点,释放锁。
               当使用commit语句结束事务以后,其他回话可以查询到事务变化后的新数据。
      2)rollback:取消事务的全部操作,恢复到事务开始前的状态。
      3)savepoint 保存点名称;      //创建一个保存点
         rollback to 保存点名称;   //回滚到保存点
      2,隐式数据提交:
          下列命令是隐式提交命令:
          Create, Alter, Drop, Connect, Disconnect, Grant, Revoke, Rename, Exit, Quit, Audit, NoAudit
     3.,自动数据提交:
          SQL> set autocommit on //打开自动数据提交开关
          SQL> set autocommit off //关闭自动数据提交开关(默认)
 
五,事务的隔离级别:
   
    1,只读事务:只读事务是指只允许执行查询的操作,而不允许执行任何其他dml操作的事务,使用只读事务可以确保用户只能
              取得某时间点的数据。
    设置只读事务:
    Set transaction read only
   
    2,可读写事务:Read write 是默认设置 , 该选项表示在事务中可以有查询和修改的操作语句。
    设置可读写事务:
    Set transaction read write
   
    3,提交读事务:这种隔离级别指的是,事务只能读取已经提交的数据,(但是支持可重复读与幻想读)是oracle数据库默认的隔离模式。
    设置提交读事务:
    Set transaction isolation level read committed
   
    4,串行事务:设置为串行事务时 , 事务与事务之间完全隔开 , 事务以串行的方式执行 , 这并不是说一个事务必须结束才能启
              动另外一个事务 , 而是说这些事务的执行的结果与一次执行的事务的结果一致,相当于把多个事务当做一个事务。
    设置串行事务:
    Set transaction isolation level serializable     
    注意:这些语句是互斥的,即不能够同时设置两个或者两个以上的选项。