mysql(五)事务

事务

事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不 执行。

Mysql 中用 BEGIN, ROLLBACK, COMMIT 来实现事务

BEGIN 开始一个事务 ROLLBACK 事务回滚 COMMIT 事务确认

例子:张三账户转账转出 100 元到李四的账户 
1、张三账户减去 100 元 
2、李四账户增加 100 元


begin;    // 开启一个事务;

UPDATE myusers SET balance=balance-100 WHERE id=1;
UPDATE myusers SET balance=balance+100 WHERE id=2;

rollback;  // 如果有失败执行回滚;
commit;   // 提交之后才更新数据;

锁 lock

Mysql 中的锁有表级锁和行级锁,这里主要讲最常用的表级锁

1、添加读锁

    可以并发读,但是不能并发写,读锁期间,没释放锁之前不能进行写操作
    使用场景:读取结果集的最新版本,同时防止其他事务产生更新该结果集 主要用在需要数据依存关系时确认某行记录是否存在,并确保没有人对这个记录进行 UPDATE 或者 DELETE 操作

lock table user read;


unlock tables;

2、添加写锁

只有锁表的用户可以进行读写操作,其他用户不行 (并发下对商品库存的操作)
多人抢一个商品
lock table user write; 


unlock tables;

原文地址:https://www.cnblogs.com/kgwei520blog/p/13783010.html