1.事务详解

1.1 事务的概念

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

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

事务用来管理 insert,update,delete 语句

1.2 事务的特性

一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

1.3 常用事务的控制语句

BEGIN 或 START TRANSACTION 显式地开启一个事务;

COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的;

ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINT;

RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

ROLLBACK TO identifier 把事务回滚到标记点;

SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。

1.4 mysql事务处理方法

1、用 BEGIN, ROLLBACK, COMMIT来实现

BEGIN 开始一个事务

ROLLBACK 事务回滚

COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

SET AUTOCOMMIT=0 禁止自动提交

SET AUTOCOMMIT=1 开启自动提交

2.实际例子

但是在日常生活中,比如张三有15620元钱(在支付宝上面),李四有240元,现在张三要给李四转600元。这时候我们需要数据库中,在张三的15620上减掉600,在李四的240上面加上600。这是俩个mysql的语句,但是如果我们执行的时候,在减掉张三的语句成功执行之后,第二句语句执行失败(因为某一种原因)。那是不是这600块就凭空消失了呢?很明显,支付宝不可能让这样的事情发生。所以我们要把这俩个语句绑在一块,要么一起执行成功,要么就都执行失败。

#-*- coding: UTF-8 -*-

importMySQLdb#包的导入

db= MySQLdb.connect("ip地址,本机为localhost","用户名","密码","表名")#打开数据库的连接

cursor=db.cursor()#使用cursor()方法获得操作游标

try:#执行sql语句

cursor.execute("update account set money=money-600 where name='zhangsan'")

cursor.execute("update account set money=money+600 where name='lisi'")#提交到数据库执行

db.commit()except:#发生错误时回滚 回滚到获取游标的位置开始重新执行 看代码上面的文字有说明

db.rollback()

db.close()#关闭数据库的连接

OK

mysql像plsql一样删除提交_MySQL学习-MySQL内置功能_事务操作相关推荐

  1. 数据库 - mysql内置功能

    mysql内置功能: 1.视图 2.触发器 3.存储过程 4.事务 5.函数 一.视图 介绍: 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名], 用户使用时只需 ...

  2. mysql 内置功能 存储过程 目录

    mysql 内置功能 存储过程介绍 mysql 内置功能 存储过程 创建无参存储过程 mysql 内置功能 存储过程 创建有参存储过程 mysql 内置功能 存储过程 删除存储过程 转载于:https ...

  3. 如何删除Android系统中的内置应用

    如何删除Android系统中的内置应用 http://blog.csdn.net/leolaurel/article/details/6607042 linux中常见的文件操作命令 http://ww ...

  4. mysql 内置功能 存储过程介绍

    存储过程介绍 就是mysql内置功能把逻辑写好 的功能给封装好,封装成一个接口名,把接口名丢给应用程序,应用程序直接调用接口名实现一系列增删改查功能 这个接口叫存储过程 基于存储过程封装成一个功能 存 ...

  5. python学习总结----内置函数及数据持久化

    python学习总结----内置函数及数据持久化 抽象基类(了解)- 说明:- 抽象基类就是为了统一接口而存在的- 它不能进行实例化- 继承自抽象类的子类必须实现抽象基类的抽象方法 - 示例:from ...

  6. Python学习(14)--内置函数

    Python学习(14)--内置函数 1.Python内置函数 在Python中有很多的内置函数供我们调用,熟练的使用这些内置函数可以让编写代码时事半功倍,所谓内置函数就是那些Python已经预定义并 ...

  7. mysql数据库管理系统的配置文件是_MySQL学习笔记_1_MySQL数据库管理系统概述

    1. MySQL架构 C/S: client / server架构 MySQL DBMS(Data Bank Management System): 数据库管理系统 客户端  服务器 --->  ...

  8. mysql里面有没有map类型_MySQL学习(二) 数据类型

    MySQL支持多种列类型:数值类型.日期/时间类型和字符串(字符)类型. 数值类型 数值类型又分为整数型与小数型 整数型 下面的表显示了需要的每个整数类型的存储和范围 创建一张表 mysql> ...

  9. sql要学mysql还是php,MySQL_与MSSQL对比学习MYSQL的心得(一)--基本语法,这一期主要是学习MYSQL的基本 - phpStudy...

    与MSSQL对比学习MYSQL的心得(一)--基本语法 这一期主要是学习MYSQL的基本语法,陆续还会有续期的文章,敬请期待 语法的差异 我这里主要说语法的不同 1.默认约束 区别:mysql里面DE ...

最新文章

  1. 源码安装、rpm安装 图
  2. 区块链应用 | 区块链将永久改变法律行业的七种方式
  3. linux下mdadm创建软件RAID
  4. 梯度下降法_梯度下降
  5. 处女座|处女座性格分析
  6. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
  7. Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)
  8. 6-1 健壮性与正确性
  9. 骑士CMS文件包含+getshell漏洞复现(python自动化验证扫描漏洞)
  10. 怎么批量给文件夹名称加上数字序号前缀?怎么对文件夹名称进行编号排序?
  11. java.util.TaskQueue的最小堆排序算法的应用
  12. oracel的安装和卸载
  13. 固态硬盘打开计算机就死机,SSD死机卡顿怎么办 固态硬盘使用详解
  14. 举个栗子~Tableau 技巧(226):用分段条形图呈现数据占比
  15. 干货分享:小程序项目实践和经验总结
  16. PXI-10024100KSps、24Bit数据采集模块
  17. 计算机网络 自顶向下(4)网络层——学习笔记
  18. css预处理全部知识点一文讲清楚
  19. MATLAB 中出现 Undefined variable py or function py.command 错误
  20. Zblog如何使用PHP插件搭建微信小程序-从0到100完整教程

热门文章

  1. 2017-2018-1 20155234 《信息安全系统设计基础》第13周学习总结
  2. 【转】 linux的网络接口之扫盲
  3. bootstrap 辅助类
  4. 关于 vmware虚拟机的一些问题及解决办法备忘
  5. 补发《超级迷宫》站立会议九
  6. Windows内置系统账户Local system/Network service/Local Service
  7. MySql应用原理分析系列文章目录
  8. Mr.J--JS学习(继承模式发展史)
  9. python的requests库
  10. HBuilder打包App方法