灰灰鼠精灵 发表于 2018-10-4 13:51:18

MySQL事务功能

MySQL事务功能

1.事务简述
  一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的。如果在事务的任何操作失败,则整个事务将失败。

2.事务特性


[*]原子性:在事务的操纵中,要么都执行、要么都不执行
[*]一致性:事务中,保证数据从一个一致状态变为另一一致状态
[*]隔离性:每个事务互不干扰,一起执行也可
[*]持久性:事务提交后,数据的影响是永久性的
3.事务使用

(1)自动提交
  

mysql> set autocommit=1;            //开启事务自动提交,set autocommit=0禁止自动提交  

(2)手动提交
  

mysql> begin;                   //事务开始声明  

  
mysql> SQL语句...;               //执行的SQL语句
  

  
mysql> rollback;                //回滚事务
  

  
mysql> commit;                  //提交事务
  

  注:回滚只能回滚当前事务提交之前操纵,所有当前事务提交成功的全部失效

(3)自动回滚的情况


[*]begin后手动退出数据库(如Ctrl+C、quit、exit)
[*]服务器断电
(4)例子:转账
  1.给对方转账1000,帐号不对
  2.输入转入金额
  3.提交确认
  begin;
  create database hehe;
  create table hehe.a(number int,user char(4),menony int(4));
  insert into hehe.a values ('1','a','1000');
  insert into hehe.a values ('2','b','10');
  commit;         //正常提交
  事务操作
  begin;          //开始
  update hehe.a set menony='0' where user='a';
  rollback;         //回滚操作
  begin;
  update hehe.a set menony='0' where user='a';
  update hehe.a set menony='1010' where user='b';
  commit;         //提交
  rollback;         //由于系统已经提交,故不能撤销,


页: [1]
查看完整版本: MySQL事务功能