上一篇我们讲了事务的概念,接下来一起研究下事务在mysql与oracle中的体现。实际上就是三个问题
- 如何开启一个事务
- 如何在事务中搞事情
- 如何结束一个事务
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 | oracle可以设置回滚点,比如在事务的一半设置回滚点,当下一半出现问题,可以选择回滚到当前点。 |