您当前的位置: 首页 >  数据库
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

数据库学习笔记1-事务 transaction

软件工程小施同学 发布时间:2021-02-24 22:31:59 ,浏览量:0

一、事务

一个事务由一系列操作组成,这些操作必须全部执行,而不能仅执行一部分。

如果事务失败,所有操作就必须全部撤销,效果就和没有执行这些操作一样,不会对之前的数据有任何改动。

 

二、数据库事务具有ACID特性
  • A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;
  • C:Consistent,一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100;
  • I:Isolation,隔离性,如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离;
  • D:Duration,持久性,即事务完成后,对数据库数据的修改被持久化存储。

 

三、实例 1.隐式事务

对于单条SQL语句,数据库系统自动将其作为一个事务执行,这种事务被称为隐式事务。

-- 第一步:将id=1的A账户余额减去100
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
2. 显式事务

要手动把多条SQL语句作为一个事务执行,

  • 使用BEGIN开启一个事务,
  • 使用COMMIT提交一个事务,

这种事务被称为显式事务

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

 

3. 主动回滚事务

有些时候,我们希望主动让事务失败,这时,可以用ROLLBACK回滚事务,整个事务会失败:

BEGIN;

-- 从id=1的账户给id=2的账户转账100元
-- 第一步:将id=1的A账户余额减去100
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- 第二步:将id=2的B账户余额加上100
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

ROLLBACK;

 

 

 

https://www.liaoxuefeng.com/wiki/1177760294764384/1179611198786848

关注
打赏
1665320866
查看更多评论
立即登录/注册

微信扫码登录

0.1071s