Mysql--事务

      事务就是一组院子行的sql查询,或者说一个独立的工作单位。如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。

       银行应用是解释事务必要性的一个经典的例子。假设一个银行的数据库中有两张表:支票(cehcking)表 和储蓄(savings)表。现在要从用户jane的支票账户转移200美元到他的储蓄账户,那么至少需要三个步骤:

    1.检查支票账户的余额高于200美元。

    2.从支票账户余额中减去200美元。

    3.在储蓄账户余额中增加200美元。

       上述三个步骤的操作必须打包在一个事务当中,任何一个步骤失败,则必须回滚所有的步骤.

       可以用start transaction语句开始一个事务,然后要么使用commit提交事务将修改的数据持久保留,要么使用rollback撤销所有的修改。事务sql的样本如下:

                  

1  START TRABSACTION;
2  SELECT balance fron checking where customer_id = 10233276;
3  Update checking set balance = balance -200.00 where customer_id = 10233276;
4  Update savings set balance = balance + 200.00 where customer_id = 10233276;
5  Commit;

  单纯的事务概念并不是故事的全部。试想一下,如果执行到第四条语句时候服务器崩溃了,会发生什么?用户可能会算是200美元。再加入,在执行到第三条语句和第四条语句质检室,另外一个进程要删除支票账户的所有月,呢么结果可能就是银行在不知道你这个逻辑的情况下白白给了jabe200美元。

       除非系统通过严格的acid的测试,否则空谈事务的概念是不够的。acid标志原子性 一直行 隔离性 和持久性。一个运行良好的事务处理系统,必须具备这些标准特征。

       下面原子性 隔离性 一致性 持久性 待补充......

 

 

 

 

转载两个php操作事务例子:https://www.cnblogs.com/insomniazz/p/6701751.html

                                           https://www.cnblogs.com/minigrasshopper/p/7803938.html

posted @ 2018-12-19 16:30  yuancr  阅读(171)  评论(0编辑  收藏  举报