事务

事务

一、什么是事务?

事务是MySQL的一种机制,每开启一个事务,都可以往里放入一系列的SQL语句。

事务是单个逻辑工作单位执行的一系列操作,要么全执行,要么全不执行,每开一个事务,相当于给数据库拍了一张快照,这意味着在提交之前可以回滚,在事务中可以设置多个保存点,然后可以进行回滚到每个保存点

我们默认为每条sql开启事务,并且会在本条sql执行完毕后自动执行commit提交,直接用 SET 来改变 MySQL 的自动提交模式,手动开启的事务里默认不会自动提交。

结束事务可以使用commit和rollback,结束事务会释放事务中所有的锁

二、事务有哪些特性?

我们可以拿发起一笔转账作为例子来诠释事务的特性

(A)原子性:事务内部的sql语句是一个不可分割的整体,这一系列的sql语句如果有一条运行失败,则整体都运行失败,比如转账行为(指转账方金额减少和接收方金额增加)只可能全执行成功或全执行失败,

(C)一致性:事务执行前后的状态保持一致,和原子性紧密相关,比如张三和李四都有500元的余额,他们余额的总数是1000元,然后开启了一个转账事务,张三给李四转了100元以后,他们各自的余额发生了变化,但他们的总金额仍然保持不变。

另外,在事务发生的前后,数据类型也应该保持一致。

(I)隔离性:多个事务并发运行,但彼此之间互不影响,比如转账时如果A和B同时各开一个事务给C转账,事务2的B先转账成功,但此时事务1中的A看不到B转账成功的信息,但A转账完,C能同时收到A和B的转账

(D)持久性:⼀个事务被提交(commit)之后,它对数据库中数据的改变是持久的,即使数据库发⽣故障也不应该对其有任何影响。

*小实验:验证事务的一致性*

准备表:

create table employee(
id int primary key auto_increment,
name varchar(20) not null,
age int(3) unsigned not null default 20
);

insert into employee(name) values
('歪歪'),
('丫丫'),
('丁丁'),
('星星'),
('格格'),
('张野'),
;
update employee set age = 18 where id <=3;
实验:

111

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇

You cannot copy content of this page