`
blues1021
  • 浏览: 141016 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

MYSQL中默认隐式事务及利用事务DML

阅读更多

一:默认情况下 ,MySQL采用autocommit模式运行。这意味着,当您执行一个用于更新(修改)表的语句之后,MySQL立刻把更新存储到磁盘中。默认级别为不可重复读。

二:会造成隐式提交的语句
以下语句(以及同义词)均隐含地结束一个事务,似乎是在执行本语句前,您已经进行了一个COMMIT。

(1)ALTER FUNCTION, ALTER PROCEDURE, ALTER TABLE, BEGIN, CREATE DATABASE, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, DROP DATABASE, DROP FUNCTION, DROP INDEX, DROP PROCEDURE, DROP TABLE, LOAD MASTER DATA, LOCK TABLES, RENAME TABLE, SET AUTOCOMMIT=1, START TRANSACTION, TRUNCATE TABLE, UNLOCK TABLES.

(2) 当当前所有的表均被锁定时,UNLOCK TABLES可以提交事务。

(3) CREATE TABLE, CREATE DATABASE DROP DATABASE, TRUNCATE TABLE, ALTER FUNCTION, ALTER PROCEDURE, CREATE FUNCTION, CREATE PROCEDURE, DROP FUNCTION和DROP PROCEDURE等语句会导致一个隐含提交。

(4) InnoDB中的CREATE TABLE语句被作为一个单一事务进行处理。这意味着,来自用户的ROLLBACK不会撤销用户在事务处理过程中创建的CREATE TABLE语句。

事务不能被嵌套。这是隐含COMMIT的结果。当您发布一个START TRANSACTION语句或其同义词时,该COMMIT被执行,用于任何当前事务。
三:利用事务DML:
1.SET AUTOCOMMIT = {0 | 1}
2.使用START TRANSACTION,autocommit仍然被禁用,直到您使用COMMIT或ROLLBACK结束事务为止。然后autocommit模式恢复到原来的状态。
3.您也可以按照如下方法开始一项事务:
START TRANSACTION WITH CONSISTENT SNAPSHOT;
WITH CONSISTENT SNAPSHOT子句用于启动一个一致的读取,用于具有此类功能的存储引擎。目前,该子句只适用于InnoDB。该子句的效果与发布一个START TRANSACTION,后面跟一个来自任何InnoDB表的SELECT的效果一样。此称为“非一致的非锁定读取”

分享到:
评论

相关推荐

    创建隐式事务管理数据库更新

    大多数现代关系型数据库如MySQL、Oracle、SQL Server和PostgreSQL都默认启用隐式事务。 2. **编写SQL语句**:在SQL查询中进行数据更新,比如修改表中的记录或插入新数据。当执行这些操作时,DBMS会自动为这些操作...

    MySQL事务

    在MySQL中,所有的DML操作在执行之后都会有一个commit操作[隐式的] commit的意思就是用来提交事务. DTL,数据事务语言 事务的定义: 就是指一组相关的SQL操作,我们所有的操作都是处在事务中的 注意: 在数据库中**,执行...

    mysql进阶知识整合

    MySQL默认开启自动提交模式,每条DML语句都会隐式提交事务。可以使用`START TRANSACTION`或`BEGIN`开启事务,`COMMIT`提交事务,`ROLLBACK`回滚事务。事务的隔离级别有四种:READ UNCOMMITTED(读未提交)、READ ...

    事物体系,看不懂你打我

    MySQL默认的隔离级别是Repeatable Read,因为它提供了较高的数据一致性,减少了并发操作中的问题。 脏读是指一个事务读取了另一个未提交事务的数据,这在Read Uncommitted隔离级别下可能发生。不可重复读是指在一个...

    MySql是否需要commit详解

    默认情况下,MySQL的`autocommit`模式通常是开启的,这意味着每次执行DML语句(如INSERT、DELETE、UPDATE)后,系统会自动提交事务。要检查当前的`autocommit`状态,可以运行`show variables like '%autocommit%'`...

    mysql开发规范文档

    - DML语句中禁止使用LIMIT和ORDER BY,避免索引失效。 - 使用预编译语句提高效率,减少SQL注入风险。 - 充分利用前缀索引,遵循最左前缀原则。 - 避免隐式类型转换、存储过程、触发器等,减少数据库耦合。 - ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     20.3 在mysql.exe程序中声明事务  20.4 Java应用通过JDBC API声明JDBC事务  20.5 Java应用通过Hibernate API声明JDBC事务  20.5.1 处理异常  20.5.2 Session与事务的关系  20.5.3 设定事务超时  20.6 Java...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     20.3 在mysql.exe程序中声明事务  20.4 Java应用通过JDBC API声明JDBC事务  20.5 Java应用通过Hibernate API声明JDBC事务  20.5.1 处理异常  20.5.2 Session与事务的关系  20.5.3 设定事务超时  20.6 Java...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     20.3 在mysql.exe程序中声明事务  20.4 Java应用通过JDBC API声明JDBC事务  20.5 Java应用通过Hibernate API声明JDBC事务  20.5.1 处理异常  20.5.2 Session与事务的关系  20.5.3 设定事务超时  20.6 Java...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     20.3 在mysql.exe程序中声明事务  20.4 Java应用通过JDBC API声明JDBC事务  20.5 Java应用通过Hibernate API声明JDBC事务  20.5.1 处理异常  20.5.2 Session与事务的关系  20.5.3 设定事务超时  20.6 Java...

    Java学习路线(csdn)————程序.pdf

    9. **数据库基础**:讲解了MySQL和Oracle数据库的基本操作,如DDL(数据定义语言)和DML(数据操纵语言),包括创建数据库、表、数据约束,以及事务处理等。 10. **JDBC API**:使用JDBC进行数据库操作,包括...

    oracle基础知识

    - **默认用户**:安装完成后,默认有两个用户——SYS和SYSTEM,分别拥有不同的权限等级。 - **登录与维护**:对于日常维护工作,使用SYSTEM用户通常就足够了。 ##### 2.2 Oracle的卸载 卸载Oracle数据库通常涉及到...

Global site tag (gtag.js) - Google Analytics