Oracle学习----数据库事务

数据库事务由以下几部分组成

DML语句,建立数据改变的一致性

DDL语句

DCL语句

以第一个DML SQL语句执行开始

以下面的事件为止

COMMIT或者ROLLBACK语句被执行

一个DDL或者DCL语句执行(自动提交)

用户退出SQL*Plus

系统崩溃

COMMITROLLBACK语句的优点

确保数据一致

在做永久改变之前可以预览数据改变

组逻辑上的相关操作

提交数据

进行改变

DELETE  FROM  employees WHERE  employee_id = 99999;

INSERT  INTO  departments VALUES  (290,’Corporate  Tax’,NULL,1700);

提交改变

 COMMIT;

COMMIT之后的数据状态

数据库中数据的改变被永久化不会丢失,即使系统崩溃。

事务结构,旧事务状态被清除,新事务开始。

旧事务中的锁定的行被释放,这些行现在可以被其它用户进行操作。

Rollback之后数据的状态

使用ROLLBACK命令放弃所有未决的改变

数据的改变被撤回

数据先前的状态被还原

受影响行上面的锁被释放

隐式事务处理

在下列环境下自动提交会发生

— DDL语句被执行

— DCL语句被执行

SQL*Plus中的正常退出,没有显式执行COMMIT或者ROLLBACK语句

SQL*Plus非正常结束或者系统失败,自动回滚发生。

读提交

事务独立方式

----读提交 readcommitted

事务中读取其它对话已提交的数据。

----连续读 serializable

事务中读取的数据保持一致性。

在并发事务间防止破坏性的交互操作

需要没有用户动作

自动使用最低级别的限制

处理事务期间上锁

事务结束时,锁自动释放

锁类型

锁的类型

                           

         DDL

         DML

                            TM表锁

                            TX行锁

                           

锁模式

锁的模式

                            rowshared               RS   2

                            rowexclusive                    RX   3

                            shared                        S       4

                            sharedrow exclusive      SRX  5

                            exclusive                  X       6

注:

         TM:RS     RX S SRX X

         TX:X

                   TX锁前先获得TM

锁模式相容性

 

 

RS

RX

S

SRX

X

RS

T

T

T

T

F

RX

T

T

F

F

F

S

T

F

T

F

F

SRX

T

F

F

F

F

X

F

F

F

F

F

DML操作与锁

SELECT 语句不需要获得锁

SELECT FOR UPDATE语句获得TMRSTXX

INSERT DELETE语句获得TMRXTXX。在外键参考的表上获得TMRS

UPDATE 句获得TMRXTXX。所果修改的是外键,则参考的表上获得TMRS

用户使用LOCK TABLE IN …获得其它的锁

[ROW] SHARE, [[SHARE] ROW] EXCLUSIVE, SHAREUPDATE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值