数据库--Mysql、Oracle数据库事务及ACID
目录
一、什么是事务?
概念
事务是指单个逻辑工作单元执行的一系列操作,用于保证数据的安全有效.要么完全地执行,要么完全地不执行;
SQL语句就是自身的一个事务。SQL语句有:DML/DDL/DCL/TCL
生活场景
我转账给别人,要么我转账成功,别人收款成功。要么我转账失败,别人收款失败。
二、事务的四大特性(ACID)?
原子性(Atomic)
概念:事务中所有数据的修改,要么全部执行,要么全部不执行;
理解:不可再分的。
一致性(Consistence)
概念:事务完成时,要使所有数据都保持一致的状态。
理解:不管谁操作了数据库,数据在数据库中的状态是一致的,大家看到的结果是一致的。
隔离性(Isolation)
概念:事务应该在另一个事务对数据的修改前或修改后进行访问。
理解:A操作的时候,不影响B,A在commit之前,可以看到修改后的结果,B看不到。
比如我要向数据库中添加一条数据,那么你想要查询数据中的数据,就应该在我添加这条记录之前或者添加之后,再查询数据库的数据。
要是你在我添加记录进行时去查询数据,在我没有commit之前,我是可以看到数据库中已经有我添加的记录了,但是你是看不到的。这个就体现了事务的隔离性。
也就是说只有在我commit之后,添加的记录才会被持久化到数据库当中,在commit之前,是可以通 过rollback进行撤销添加的。
持久性(Durability)
事务一旦提交,也就是commit之后,对数据库的修改是持久有效的,即使发生系统故障,也不应该丢失。
三、事务的分类?
隐式事务
理解:数据库(SQL/ORACLE)自动帮我们处理事务(自动提交事务)。
SET AUTO COMMIT ON (只针对一个连接);
以下情况自动提交事务:
正常执行完成的DDL语句:create、alter、drop、delete...
正常执行完成的DCL语句:grant、invoke...
正常退出的客户端工具:SQL Plus、SQL Developer、PL/SQL Developer
显式事务
理解:自己来处理事务(手动提交事务)
关键字
BEGIN TRANSACTION 表示一个事务要开始了。
COMMIT TRANSACTION 表示从begin(事务开始)后的所有修改都被持久化到数据库中。
ROLLBACK TRANSACTION 表示从begin(事务开始)后的所有修改都会被还原。
SAVEPOINT TRANSACTION SAVE_NAME 表示在事务中设置保存点SAVE_NAME(保存点名称)
ROLLBACK TRANSACTION SAVE_NAME 表示可以rollback回滚到SAVE_NAME(保存点名称)
PS:
显式事务是需要我们显式(手动)调用TCL(事务控制语言)语句;
当我们commit之后,对数据的修改才真正的持久化到数据库中,在commit之前,可以通过rollback撤销修改的。
SQL语句之DDL、DML、DCL、TCL区别?点击了解~
文章来源: blog.csdn.net,作者:吾日三省贾斯汀,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/JustinQin/article/details/77877733
- 点赞
- 收藏
- 关注作者
评论(0)