Transaction
-
把所有事情当一件事做–>原子性
事务有缓存
-
事务只有提交(commit)后,才会改了数据–>mysql命令行界面可以
begin; ...sql语句 commit;未提交前可以回滚(rollback)
begin; ...sql语句 rollback; commit; -
可以在存储过程中写事务
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;
来源:https://blog.csdn.net/qq_38328762/article/details/99167682