数据库 | 事务相关知识点总结
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
本专栏收录了数据库的知识点而从本文起将讲述有关于数据库设计有关知识点提供给有需要的小伙伴进行学习本专栏地址可以戳下面链接查看
🎈 数据库知识点总结持续更新中【数据库知识点】
🔑 数据库相关练习题持续更新中【数据库练习题】
文章目录
一、概述
1.概念
数据库的事务Transaction是一种机制、一个操作序列包含了一组数据库操作命令。
事务把所有的命令作为一个整体一起向系统提交或撤销操作请求即这一组数据库命令要么同时成功要么同时失败。
事务是一个不可分割的工作逻辑单元。
2.实例
比如现李四需要转换500块钱给张三具体的转账操作为
第一步查询李四账户余额
第二步从李四账户金额 -500
第三步给张三账户金额 +500
现在假设在转账过程中第二步完成后出现了异常
第三步没有执行就会造成李四账户金额少了500而张三金额并没有多500
这样的系统是有问题的。如果解决呢
使用事务可以解决上述问题
二、语法
1.开启事务
START TRANSACTION;
BEGIN;
2.提交事物
提交事物可以理解为数据库在执行某个操作以后要将操作的结果再返回给数据库实现改变数据的效果个人理解所以提交事务的语句一般会写在SQL语句后面回滚事物的上一条
COMMIT;
3.回滚事物
回滚事物可以理解为在出现异常的时候将数据库内的数据恢复成开启事物之前的样子。比如上面的实例如果出现异常的话那么回滚事物也就意味着将张三和李四账户内的余额恢复成初始值即我们第一次设定的值。
在JavaWeb中学到JDBC部分会写相关语句就需要把回滚事物的语句写在catch
中try…catch语句来抓取并处理异常
ROLLBACK;
三、特征
-
原子性Atomicity: 事务是不可分割的最小操作单位要么同时成功要么同时失败
-
一致性Consistency :事务完成时必须使所有的数据都保持一致状态
-
隔离性Isolation :多个事务之间操作的可见性
-
持久性Durability :事务一旦提交或回滚它对数据库中的数据的改变就是永久的
四、实例
1.开启事物
首先我们定义一张user的表这里查询一下
然后我们执行一个有错误的SQL语句
-- 开启事务
BEGIN;
-- 转账操作
-- 2. 李四账户 -500
UPDATE `user` set money = money - 500 where name = '李四';
-- 此处不是注释在整体执行时会出问题后面的sql则不执行
出现异常了...
-- 3. 张三账户 +500
UPDATE `user` set money = money + 500 where name = '张三';
-- 提交事务
COMMIT;
-- 回滚事务
ROLLBACK
再来查询一下发现数据没有变化
2.不开启事物
-- 李四账户 -500
UPDATE `user` set money = money - 500 where name = '李四';
-- 此处不是注释在整体执行时会出问题后面的sql则不执行
出现异常了...
--张三账户 +500
UPDATE `user` set money = money + 500 where name = '张三';
发现李四的钱少了张三的没有加这显然不符合我们的需求
五、结语
这一章内容需要知道其原理在后续学系JavaWeb中依然会用到有任何问题可以评论留言