Transaction Control Language

TCL事务控制语言
什么是事务

  • 一个或一组sql语句组成的一个执行单元(全部执行或全部不执行)
  • 如果单元中某一语句出错,整个单元则会回滚

事务的acid属性

  • 原子性:事务不可再分割
  • 一致性:数据库从一个一致性状态转换到另一个一致性状态
  • 隔离性:一个事务执行不受其他事务干扰
  • 持久性:事务一旦提交,数据库更改是永久性的

事务的创建

  • 隐式事务:例如常见单句操作语句
  • 显式事务:明显开启结束标记(合起来成为一条事务)

设置自动提交功能
set autocommit=0
关闭自动提交,不会立刻执行语句,故显式事务得以实现

语法

#1开启事务
SET autocommit=0
START TRANSACTION
#2编写
语句1;
语句2;
...
#3结束
COMMIT #或者提交事务
ROLLBACK #或者回滚事务

在结束之前,数据保存在内存,只有结束标记检测,才会进一步处理(回滚或者提交到文件系统)

数据库的隔离级别
要了解隔离等级这一概念,首先需要引入并发问题:

  • 脏读:事务1事务2,事务1读取了被事务2更新但未提交的字段,若事务2回滚,事务1读取的内容是临时、无效的

file

by the way 电脑的迅雷抽风了

  • 不可重复读:事务1事务2,事务1读取了字段,事务2更新了该字段,事务1再次读取同一字段,值出现了变化
  • 幻读:两个事务,事务1读取字段,事务2插入了新行,之后事务1再次读取,多了几行

避免并发问题,设置事务的隔离级别
mysql支持4中事务隔离级别,默认为repeatable read

回滚点
类似于游戏的存档

set autocommit=0;
start trasaction;
delete from account where id=25;
savepoint a #设置为a的保存点
delete from account where id=29;
rollback to a; #回滚至a(后面不会执行)

视图
create view

暂无评论

发送评论 编辑评论


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