Oracle的事务(rollback,commit,savepoint)

文章目录


数据库中将完成一组相关行为的SQL语言称为事务

DDL

DDL:数据库定义语言
包括create drop alter truncate
这些操作会直接提交到数据库中

DML

DML:数据库控制语言
包括insert delete update
这些操作会提交到一个日志文件中
这些日志文件处于缓存状态,只有当缓存被提交到数据库中时,操作才会被真正的存储
即DDL语句只有遇到commit指令时,改变才会提交到数据库中
这样做是为了方便当数据库中出现故障时,根据日志文件进行恢复数据库

例如我们创建表,然后插入数据
Oracle的事务(rollback,commit,savepoint)
这时使用rollback进行事务回滚,就会发现表还在,数据却没有了
Oracle的事务(rollback,commit,savepoint)
rollback会将数据库状态回滚到上一次commit的状态
例如,如果我们在插入数据时进行commit
Oracle的事务(rollback,commit,savepoint)
再进行回滚,数据显示的会是commit之前插入的数据
Oracle的事务(rollback,commit,savepoint)

检查点

我们可以通过设置存档点,在回滚时有选择的回到某个状态
类似于游戏中的存档
Oracle的事务(rollback,commit,savepoint)
此时表的状态是
Oracle的事务(rollback,commit,savepoint)
当回滚到A存档点时
Oracle的事务(rollback,commit,savepoint)
当回滚到B存档点时

Oracle的事务(rollback,commit,savepoint)
存档点B同时存储了存档点A中的信息。
当这些语句被commit进行提交后,日志中所有的savepoint数据都会被删除