• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
饿啊
博客园    首页    新随笔    联系   管理    订阅  订阅
事务与存储过程

事务管理

事务是针对数据库的一组操作,它可以由一条或多条SQL语句组成

【注意:事务中的语句要么都执行,要么都不执行】

先创建一个表

 

开启事务

START TRANSACTION;

 

提交事务并查看

COMMIT;

 

 

当用户确认提交后,事务中的操作才会执行成功,这个过程就是手动提交的过程

 

直接查看

 

退出数据库再查看

 

事务的四大特性

1.原子性:是指一个事务必须被视为一个不可分割的最小工作单元。只有事务中所有的数据库操作都执行成功,才算整个事务执行成功,任何一个SQL语句执行失败,都会退回到执行事务前的状态。

2.一致性:是指事务将数据库从一种状态转变为下一种一致的状态。例如,在表中有一个字段具有唯一约束,但事务对其进行了修改,使其变得不唯一了,这就破坏了事务的一致性要求,如果事务中的某个动作失败了,系统可以自动撤销事务,返回初始化的状态。

3.隔离性:还可以称为并发控制、可串行化、锁等,当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

4.持久性:事务一旦提交,其所做的修改就会永久保存到数据库中,即使数据库发生故障也不应该对其有任何影响。需要注意的是,事务的持久性不能做到100%的持久,只能从事务本身的角度来保证永久性,而一些外部原因导致数据库发生故障,如硬盘损坏,那么所有提交的数据可能都会丢失。

回滚事务

ROLLBACK;

【注意:ROLLBACK语句只针对未提交的事务执行回滚操作,已提交的事务是不能回滚的】

例:a账户有1000元,b账户有1000元,开启一个事务,通过update语句将a账户的100元钱转给b账户

 

a账户成功给b账户转账100元钱,如果此时a账户不想给b账户转账了,由于事务还没有提交,就可以将事务回滚

 

事务的隔离级别

数据库是多线程并发访问的,所以很容易出现多个线程同时开启事务的情况,这样就会出现脏读、重复读以及幻读的情况,为了避免这种情况的发生,就需要为事务设置隔离级别

事务的四种隔离级别

READ UNCOMMITTED(读未提交)

READ COMMITTED(读提交)

REPEATABLE READ(可重复读)

SERIALIZABLE(可串行化)

posted on 2019-12-19 11:07  油炸鸡腿饿饿饿  阅读(290)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3