MYSQL处理事务

mysql处理事务

1.一起提交或一起回滚,要么一起成功要么一起失败.

提交:commit 回滚:rollback

如果在银行汇款场景中,A向B款1000元,A的账户里要减去1000元

,同时B的账户里要加上1000元,这两个账户余额的统一操作定性为事物

,这两个 操作要么一起成功,要么一起失败,必须统一提交或回滚事物。

2.事务的四个特性:

  • 原子性:

一组事务,要么成功,要么撤回

  • 一致性

事务执行后,数据库状态与其他业务规则保持一致,如转账业务,无

论事务执行成功否,参与转账的两个账号余额之和应该是不变的。

  • 隔离性

事务独立运行,一个事务处理后的结果,影响了其他事务,那么其他事务会撤回.事务的100%隔离,需要牺牲速度

  • 持久性

软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 选项 决定什么时候吧事务保存到日志里.长久的保存数据.

3.mysql中的事务

在默认情况下,Mysql每执行一条SQL语句,都是一个单独的事务,如果需要在一个事务中包含多条SQL语句,那么需要开启事务和结束事务

开启事务:start transaction

update 1.....

update 2.....

结束事务:commit或rollback

在执行sql语句之前,先执行start transaction,这就开启了一个事务(事务的起点),然后可以去执行多条SQL语句,最后要结束事务,commit表示提交,即事务中的多条sql语句所作出的影响会持久到数据库中,或者rollback,表示回滚到事务的起点,之前做的所有的操作都被撤销了.

4.mysql中的事务操作

-- 开启事物

START TRANSACTION;

UPDATE emp set SAL=SAL+9527 WHERE EMPNO=10001

;

UPDATE emp set SAL=SAL-9527 WHERE EMPNO=10002

;

-- 事物回滚

ROLLBACK 

-- 开启事物

START TRANSACTION;

UPDATE emp set SAL=SAL+9527 WHERE EMPNO=10001

;

UPDATE emp set SAL=SAL-9527 WHERE EMPNO=10002

;

-- 事物回滚

COMMIT;

5.JDBC事务

1.con.setAutoCommit(false)开启事务

2.事务的提交和回滚一般与异常并用

猜你喜欢

转载自blog.csdn.net/thomasongq/article/details/82390748