ORACLE数据库中的事物

这篇文章讲的是ORACLE数据库中的事物,如有错误或不当之处,还望各位大神批评指正。

什么叫事物?

事物是一种逻辑操作单元,将数据库中的记录从一种状态转换成另一种状态(如:添加一条数据)由一个或多个DML语句,或一个DDL语句,或一个DCL语句组成,其中DDL是自动提交的。

数据说明

用户表T_USER结构如下:

字段类型长度主键为空
idnumber6
姓名char20
年龄number2
性别char2
日期date-
分数float-

初始数据
这里写图片描述

数据控制语言DCL

commit 就是确定提交的意思,比如你用SCOTT账户登录数据库insert到表中一条记录,而不commit,那么别的账户在登录这个数据库时就查询不到你insert 的记录;而commit后则其他账户就能查询到你insert的记录了。

rollback就是回滚的意思,比如你用test账户登录数据库delete表中一条记录,这时你查询这个表时,则delete的记录不存在;再rollback后,你再查询你delete的记录时,发现被删除的记录又回来了,rollback操作是返回上一次的commit之后状态。

savepoint是为数据库设置一个存档点,可以rollback回来。

commit语句与rollback语句
  • 将t_user表中‘张三’的成绩修改为90(不提交)
update t_user
set u_score = 90 
where u_name = '张三'

执行结果:
这里写图片描述

执行rollback语句后
这里写图片描述

  • 将t_user表中‘张三’的成绩修改为90(提交)
update t_user
set u_score = 90 
where u_name = '张三';
commit ;

这里写图片描述

执行rollback语句后

这里写图片描述

注:说明rollback回滚的是上一个commit后的状态。

savepoint语句
  • 将‘李四’的成绩改为60,并设置存档点A
update t_user
set u_score = 60 
where u_name = '李四' ;

savepoint A

执行结果:
这里写图片描述

  • 将‘王五’的成绩改为60,并设置存档点B
update t_user
set u_score = 60 
where u_name = '王五' ;

savepoint B

执行结果
这里写图片描述

  • 回到存档点A
rollback to savepoint A ;

执行结果:
这里写图片描述

提交与回滚前的数据状态

当一个用户对数据库进行DML操作时,在提交前其他用户不能看到修改后的数据;当一个用户对数据库进行DML操作时,所涉及的行将会被锁定,其他用户不能进行操作;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值