事务是一组操作数据库的SQL语句组成的工作单元,该工作单元中所有操作要么同时成功,要么同时失败。事物有如下四个特性,ACID简称“酸性”。

1)原子性:工作单元中所有的操作要么都成功,要么都不成功,不会出现部分成功的情况。

2)一致性:工作完成其结果应与预期一致,比如由A账户向B账户转账的事物,若该事物执行成功则必须保证A账户转出多少钱,B账户相应转入多少钱;若该事物失败,则此次转账即失败。事物的其它三个性质都是为了保证该一致性的。

3)隔离性:隔离性还可以称为并发控制、可串行化、锁等。事物中所操作的数据要隔离起来,以防止其他用户访问这些数据而带来的不一致情况。

4)持久性:事务一旦提交,其所做的修改就会永久保存到数据库中,即使数据库发生故障也不应该对其有任何影响。

事务的持久性不能做到100%的持久,只能从事务本身的角度来保证永久性,而一些外部原因导致数据库发生故障,如硬盘损坏,那么所有提交的数据可能都会丢失。

2. MySQL中开启事务的方法

MySQL中事物的详解

2.1.方法一

用BEGIN或START TRANSACTION来开启一个事物,COMMIT或ROLLBACK来结束该事物。

-- 保存点 savepoint  
begin  
  declare is_error int default false;#是否出错的标志  
  declare continue handler for sqlexception  
  set is_error=true;#声明异常处理程序,如果sql异常,则把标志为设置为true  
  start TRANSACTION;#开启事务,则会同时失败,同时成功  
  savepoint s1;#创建保存点  
  insert into employee(id,name,salary) values(146,'cq',9000);  
  savepoint s2;  
  insert into employee(id,name,salary) values(101,'cq',9000);  
  insert into employee(id,name,salary) values(102,'cq',9000);  
  if is_error THEN  
    rollback to savepoint s1;-- 还原到s1  
    insert into employee(id,name,salary) values(151,'cq',9000);  
    insert into employee(id,name,salary) values(152,'cq',9000);  
    commit;  
  end if;  
end;  
View Code

相关文章:

  • 2021-12-21
  • 2021-04-29
  • 2021-06-16
  • 2022-12-23
  • 2021-05-10
猜你喜欢
  • 2021-09-27
  • 2022-12-23
  • 2021-07-15
  • 2021-09-06
  • 2021-11-27
  • 2018-07-25
  • 2022-01-22
相关资源
相似解决方案