ORACLE数据库中的事物

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

什么叫事物?

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

数据说明

用户表T_USER结构如下:

字段 类型 长度 主键 为空
id number 6
姓名 char 20
年龄 number 2
性别 char 2
日期 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操作时,所涉及的行将会被锁定,其他用户不能进行操作;

猜你喜欢

转载自blog.csdn.net/u013634252/article/details/80693413
今日推荐