MYSQL-6-事务

血红的双手。 提交于 2019-11-26 22:28:09

Transaction

  1. 把所有事情当一件事做–>原子性

    事务有缓存

  2. 事务只有提交(commit)后,才会改了数据–>mysql命令行界面可以

     begin;
         ...sql语句
     commit;
    

    未提交前可以回滚(rollback)

     begin;
         ...sql语句
     rollback;
     commit;
    
  3. 可以在存储过程中写事务

     delimiter $$
     create procedure pro_traction_transfer_money(in fname varchar(255),in tname varchar(255),in account int,out res varchar(255))
     begin
     	declare balance double default 0;
     	start transaction;
     	update user set money=money-account where name=fname;
     	select money into balance from user where name=fname;
     	if balance>=0 then
     			update user set money=money+account where name=tname;
     			commit;
     			set res='转账成功';
     	else
     			rollback;
     			set res='余额不足';
     	end if;
     end $$
     
     -- 调用:
     set @r='';
     call pro_traction_transfer_money('tony','tom',100,@r);
     select @r;
    
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!