flyFish's recorder.

数据库的事务控制

2018/06/24 Share

上一篇我们讲了事务的概念,接下来一起研究下事务在mysql与oracle中的体现。实际上就是三个问题

  1. 如何开启一个事务
  2. 如何在事务中搞事情
  3. 如何结束一个事务

MYSQL的事务控制

方式一 : 手动开启事务

  • begin/start transaction开始一个事务
  • rollback事务回滚
  • commit 事务确认

begin或者start transaction可以开始一个事务,这时我们就可以在事务内执行修改读写操作,通过commit或者rollback来结束这个事务。

当一个成功的事务完成后,发出COMMIT命令使所有参与表的更改才会生效。如果发生故障时,应发出一个ROLLBACK命令返回的事务中引用的每一个表到以前的状态。

方式二 : 改变mysql的自动提交模式

mysql默认是自动提交的,也就是你执行一个sql,就直接commit!这也是为什么我们不用提交,就可以看到数据的改变。

  • set autocommit = 0 禁止自动提交
  • set autocommit = 1 开启自动提交
  • rollback事务回滚
  • commit 事务确认

值得注意的是,设置完禁止自动提交一旦,执行sql,则视为开启事务,直到commit或者rollback。如此反复。

ORACLE的事务控制

  • Oracle的事务开始:第一条DML操作做为事务开始

  • Oracle的提交事务

    • 显示提交:commit
    • 隐藏提交:DDL/DCL/exit(sqlplus工具)
`注意:提交是的从事务开始到事务提交中间的内容,提交到ORCL数据库中的DBF二进制文件  `
  • Oracle的回滚事务

    • 显示回滚:rollback
    • 隐藏回滚:关闭窗口(sqlplus工具),死机,断电

      注意:回滚到事务开始的地方

1
2
3
oracle可以设置回滚点,比如在事务的一半设置回滚点,当下一半出现问题,可以选择回滚到当前点。
savepoint a;rollback to savepoint a;
提交或回滚后,原来设置的回滚点失效
CATALOG
  1. 1. MYSQL的事务控制
    1. 1.1. 方式一 : 手动开启事务
    2. 1.2. 方式二 : 改变mysql的自动提交模式
  2. 2. ORACLE的事务控制