事务TRANSACTION 1

MySQL事务是指一组SQL语句作为一个工作单元,同生共死。类似JS中的Array.prototype.every方法

事务的特点

  1.   原子性(Atomicity):即事务中的SQL像原子一样牢不可破,无论有多少组SQL,都作为一个工作单元来执行,要么都成功,要么都退回去,撤销修改。
  2.   一致性(Consistency):通过使用事务,数据库将保持一致性。
  3.   隔离性(Isolation):多个事务对一条数据进行修改时,事务会锁定当前数据直到完成。因此,对于数据而言,一次只能被作用于一个事务。
  4.   持久性(Durability):事务产生的更改是永久性的。

 

创建一个事务

  

START TRANSACTION;

INSERT INTO orders(customer_id,order_date,status)
VALUES(1,'2019-01-01',1);

INSERT INTO order_items
VALUES(LAST_INSERT_ID(),1,1,1);

COMMIT;

对于以上SQL,包含了两条INSERT 语句,如果其中任何一条失败,则该事务就会退回并撤销修改。

ROLLBACK  关键字,当我们想要进行错误检查或手动退回事务,则可以将ROLLBACK 代替 COMMIT,那么该事务会原路退回

 


并发和锁定

当多个事务同时对一条数据进行操作时候,事务会将自己处理的该行数据上锁,避免其他事务影响,其他事务得等着当前事务处理完成,然后进行处理,

可以用workbench开两个连接测试一下。

 

上一篇:Linux kernel 的 sendfile 是如何提高性能的


下一篇:efcore事务使用