mysql事务

作者: 剑道_7ffc | 来源:发表于2019-04-16 06:54 被阅读10次

什么是事务

一组不可分割的操作集合

经典的例子

银行转账

--转账100元:必须同时成功或同时失败

UPDATE user_account SET balance = balance - 100 WHERE id = 1;

UPDATE user_account SET balance = balance + 100 WHERE id = 3;

mysql如何开启事务

1 不管自动提交(autocommit)是on还是false

BEGIN;或 START TRANSACTION;

update teacher set name ='seven' where id =1;

COMMIT;或ROLLBACK;

2 若autocommit是false(set session autocommit = OFF)

update teacher set name ='seven' where id =1;

COMMIT;或ROLLBACK;

3若autocommit是true(查询autocommit状态:show VARIABLES like 'autocommit' 默认是on)

则执行一行提交一行,若同时执行多条语句,开启多个事务,可以认为是在action层循环执行sql

例子是:同时执行以下sql

update teacher set name ='seven' where id =1; --sql正确

insert teacher (name1,age) value ('james',22);--sql错误

delete from teacher where name = 'seven'; --sql正确

执行结果:

Sql1:执行成功并提交,sql2:执行报错,sql3:未执行

4代码如何开启

Jdbc:connection.setAutoCommit(TRUE);

Spring:通过aop来管理

事务的ACID特性

原子性(atomicity: /,ætə'mɪsɪti/):要么全部成功,要么全部失败

一致性(consistency:/kən'sɪstənsi/):数据的可见性,中间状态对外部不可见,最初状态和最终状态对外部可见。

隔离性(isolation:/,aɪsə'leʃən/ ):一个事务未提交,其他事务是否可见,会破坏一致性。

持久性(durability:/,djʊrə'bɪləti/):事务提交后,jdbc改变是持久的:若提交成功,但jdbc对数据改变还没有执行完,发生系统故障,可以通过事务的操作日志来恢复这部分数据(先备份数据操作日志才允许事务提交)

相关文章

网友评论

    本文标题:mysql事务

    本文链接:https://www.haomeiwen.com/subject/kltvwqtx.html