事务的四大特性(ACID)
1、原子性(Atomicity):
数据库中原子性强调事务是一个不可分割的整体,事务开始后的所有操作要么全部成功,要么全部失败,不可能停滞在中间某个环节。如果事务执行过程中出错就会回滚到事务开始前的状态,所以的操作就像没有发生一样对数据库没有任何影响。
2、一致性(Consistency):
事务必须使数据库从一个一致性状态变换到另一个一致性状态。
3、隔离性(Isolation):当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
4、持久性(Durability):一个事务一旦被提交,则对数据库的所有更新将被保存到数据库中,不能回滚。
注意:默认情况下,单条DML语句独立一个事务,所以要先set autocommit=0
例子:
set autocommit=0;
update account set money=money-100 where card_id= '1234567890';
update account set money=money+100 where card_id= '0987654321';
上述事务没有结束(commit\rollback),则当前窗口查询数据,查询出的是缓存中数据
rollback:撤销事物中sql语句操作
set autocommit=0;
update account set money=money-100 where card_id= '1234567890';
update account set money=money+100 where car= '0987654321';
rollback;
进行了回滚,则上述两个update语句所执行的操作被撤销。
set autocommit=0;
update account set money=money-100 where card_id= '1234567890';
update account set money=money+100 where car= '0987654321';
commit;
commit:对数据库的更新将被保存到数据库中