事务
对同一个表可能同时有很多人在用,为保持数据的一致性,所以提出了事务的概念。
A 给B 要划钱,A 的账户-1000元, B 的账户就要+1000元,这两个update 语句必须作为一个整体来执行,这些数据库操作语句就构成一个事务。
特点
- 原子性(atomicity)
一个事务必须被视为一个不可分割的最小单元,整个事务中的所有操作要么全部提交成功,要么全部失败,对于一个事务来说,不可能只执行其中的一部分操作。
- **一致性(consistency)
一致性是指事务将数据库从一种一致性转换到另外一种一致性状态,在事务开始之前和事务结束之后数据库中数据的完整性没有被破坏
- 隔离性(isolation)
一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(durability)
一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,已经提交的修改数据也不会丢失
create table tbl_money (
id int not null primary key auto_increement,
money int not null
)engine = innodb default charset=utf8;
insert into tbl_money values(0,100),(0,200),(0,300);
练习1
select * from tbl_test;
begin; 或start transcation
update tbl_money set money = money - 100 where id = 1;
update tbl_money set money = money + 100 where id = 2;
commit;
练习2
select * from tbl_test;
begin; 或start transcation
update tbl_money set money = money - 100 where id = 1;
update tbl_money set money = money + 100 where id = 2;
rollback;