数据库之事务
程序员文章站
2024-01-14 09:59:04
...
事务
1.什么是事务
数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成
2.ACID
-
原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生 -
一致性(Consistency)
表示事务结束后的数据不随着外界原因导致数据丢失,事务前后数据的完整性必须保持一致。例如转钱一样,两个人的总值是不会变的 -
隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。 -
持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。没有提交就不会变,一旦提交就变不了
3.事务的隔离级别
-
脏读:指一个事务读取了另外一个事务未提交的数据。
-
不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)
-
虚读(幻读)是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。(一般是行影响,多了一行)
SET autocommit=0;/*设置自动提交,不设置的话,我们更新的数据就会自动提交*/
START TRANSACTION /*开启一个事务*/
UPDATE `user` SET money=money-500 WHERE `user`.`name`='A';
UPDATE `user` SET money=money+500 WHERE `user`.`name`='B';
ROLLBACK/*回滚。数据不会提交,会回到数据提交之前的状态*/
COMMIT/*提交数据,事务的一致性*/
SET autocommit=1;
下一篇: 数据库之事务