首页 > 其他分享 >事务

事务

时间:2024-08-01 14:20:56浏览次数:10  
标签:autocommit 事务 SET -- money 提交

事务

将一组SQL放在一个批次去执行,要么都成功,要么都失败

事务原则:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

原文链接:https://blog.csdn.net/dengjili/article/details/82468576

原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

一致性(Consistency)
事务前后数据的完整性必须保持一致。

隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

持久性(Durability)--- 事务提交
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,不可逆,接下来即使数据库发生故障也不应该对其有任何影响

隔离所导致的问题

脏读:

指一个事务读取了另外一个事务未提交的数据。

不可重复读:

在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)

虚读(幻读):

是指在一个事务内读取到了别的事务插入的数据,导致前后读取数量总量不一致。

-- mysql 默认开启事务自动提交
SET autocommit = 0 /*关闭*/
SET autocommit = 1 /*开启(默认)*/

-- 手动处理事务
SET autocommit = 0 -- 关闭自动提交

-- 事务开启
START TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务内

INSERT xx
INSERT xx

-- 提交: 持久化(成功)
COMMIT
-- 回滚: 回到原来的样子(失败)
ROLLBACK

-- 事务结束
SET autocommit = 1 -- 开启自动提交

-- 了解
SAVEPOINT 保存点名 -- 设置一个事务的保持点
ROLLBACK TO SAVEPOINT 保存点名 -- 回滚到保存点
RELEASE SAVEPOINT -- 撤销保存点

模拟事务:

CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci

USE shop
CREATE TABLE `account`(
  id INT(3) NOT NULL auto_increment,
  name VARCHAR(30) NOT NULL,
  money DECIMAL(9,2) NOT NULL,
  PRIMARY KEY(id)
)ENGINE=innodb DEFAULT CHARSET=utf8


INSERT INTO account(name , money)
VALUES('A',2000.00),('B',3000.00)

-- 模拟转账:事务
SET autocommit = 0; -- 关闭自动提交
START TRANSACTION;

UPDATE account SET money=money - 500 WHERE name = 'A'; -- A 减500
UPDATE account SET money=money + 500 WHERE name = 'B'; -- B 加500

COMMIT; -- 提交事务 被持久化
ROLLBACK; -- 回滚

SET autocommit = 1; -- 恢复默认值

标签:autocommit,事务,SET,--,money,提交
From: https://www.cnblogs.com/shisi2001/p/18336567

相关文章

  • 【MySQL】事务 【上】{事务的版本支持 事务提交方式 实验结论 用户问题 如何理解隔离
    文章目录1.引入事务事务的版本支持事务提交方式实验结论用户问题2.隔离性如何理解隔离性隔离级别查看与设置隔离性4.四种隔离级别的场景读未提交读已提交可重复读串行化1.引入事务当客户端A检查还有一张票时,将票卖掉,还没有执行更新数据库的时候,客户端B检查了票数......
  • 三,搭建环境:事务控制
    三,搭建环境:事务控制@目录三,搭建环境:事务控制声明式事务配置注解写法查询操作增删改操作声明式事务配置在demo-module01-web的模块下的,spring-persist.xml配置文件中开启基于注解的声明式事务支持<!--配置事务管理器--><beanid="transactionManager"class=......
  • 事务 隔离级别
    事务特性原子性:事务最小的工作单元,不可再分隔离性:事物之间相互隔离,保证互不干扰一致性:事务要求要么同时成功,要么同时失败持久性:持久性是事务结束的标志事务隔离级别脏读Read_uncommitted脏读提交读read_committed解决脏读异常:不可重复读可重复读repeatable_read解决......
  • Spring-transaction 事务
    1.事务介绍1.1简介事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致......
  • 事务
    事务特性原子性:事务最小的工作单元,不可再分隔离性:事物之间相互隔离,保证互不干扰一致性:事务要求要么同时成功,要么同时失败持久性:持久性是事务结束的标志隔离性springREQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。......
  • [Mysql-事务]
    目录事务是什么:简单事务实现举例:事务ACID原则:事务隔离性事务的隔离级别:锁分类:事务是什么:        事务(Transaction),就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行。简单事务实现举例:        就像现......
  • 使用Seata XA模式的全局事务管理在SpringCloud电商订单系统中的应用
    在开发电商系统的过程中,订单创建是一项非常关键的功能。本文将介绍如何在订单创建过程中,结合SpringCloud和Seata的XA模式来实现全局事务管理,以确保数据的一致性和完整性。订单创建过程详解在这段代码中,我们通过@GlobalTransactional注解来声明一个全局事务。以下是具体的......
  • 分布式事务
    分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。这种事务处理机制旨在确保在分布式环境下,跨多个节点或服务的操作要么全部成功,要么全部失败,以保证数据的一致性和完整性。以下是关于分布式事务的详细解析:......
  • SQLServer 事务复制在发布端(publication)和订阅端(subscription)对应的数据库还原之后复
     书接上文,在一个正常的事务复制环境中,如果发生了数据库还原,事务复制会不会出问题,出问题之后又如何恢复,如果在不删除订阅发布重建的情况下,如何在现有基础上修复事务复制的异常,这个问题可以分为两部分看:1,如果publisher数据库发生了还原操作,事务复制会出现什么异常,该如何恢复?2,如......
  • 分布式事务
    CAP定理一致性:分布式应用读写是一致的,应用A做了修改应用B读取时会获取修改可用性:分布式应用服务是可访问的分区容错性:分布式应用之前存在网络问题会导致各个应用无法通讯分区容错性是必须要保证的。一致性和可用性不能同时保证,假如应用A做了修改为了保证一致性在A没有做数据......