TCL语言的学习
tiansaction contro languge 事务控制语言
事务
一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行
事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个msql语句是相互依赖的。
存储引擎
概念:在mysql中的数据用各种不同的技术存储(表类型)在文件(内存)中,
show engines:来查看存储引擎
类型:
Myisam:不支持
Innodb:支持事务
memory :不支持
事务的属性
ACID
A原子性:事务不可分割
C一致性:事务必须从一个一致性状态切换到另一个一致性状态
I隔离性:一个事务的执行不受其他事务的干扰
D持久性:事务一旦提交,对数据库的改变就是永久性的
事务的创建
隐式事务:
事务没有明显的开启和结束的标记:
比如 insert update delete语句
显式事务:
事务有明显的开启和结束的标记:
前提,显设置自动提交功能为禁用
show variables like “autocommit”;
set autocommit=0;
关闭只针对于当前的回话有效,每次开机都要设置一下
步骤:
一:开启事务
set autocommit=0; 默认开启事务
start transaction;可选的
二:编写sql语句(增删改查,DDL语言无法开启事务)
语句1,
语句2,
…
三:结束事务
commit:提交事务
rollback:回滚事务
在mysql不可以智能选择 有异常回滚,无异常提交。
在没有结束事务之前,知识存储在内存中。
事务的隔离级别
并发问题:
脏读:对于两个事务t1,t2. t1读取了已经被t2更新但还没有被提交的字段之后,若t2回滚,t1读取的内容 就是临时无效的。
不可重复读:对于两个事务t1,t2 t1读取了一个字段,然后t2更新了该字段之后,t1再次读取同一个字段,值不一样了。
幻读:对于两个事务t1,t2. t1从一个