欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库之事务

程序员文章站 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;
相关标签: 数据库 mysql