zoukankan      html  css  js  c++  java
  • MYSQL中默认隐式事务及利用事务DML

    一:默认情况下,MySQL采用autocommit模式运行。这意味着,当您执行一个用于更新(修改)表的语句之后,MySQL立刻把更新存储到磁盘中。默认级别为不可重复读。
     
    二:会造成隐式提交的语句
    以下语句(以及同义词)均隐含地结束一个事务,似乎是在执行本语句前,您已经进行了一个COMMIT。

    (1)ALTER FUNCTION, ALTER PROCEDURE, ALTER TABLE, BEGIN, CREATEDATABASE, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATETABLE, DROP DATABASE, DROP FUNCTION, DROP INDEX, DROP PROCEDURE, DROPTABLE, 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 CONSISTENTSNAPSHOT子句用于启动一个一致的读取,用于具有此类功能的存储引擎。目前,该子句只适用于InnoDB。该子句的效果与发布一个STARTTRANSACTION,后面跟一个来自任何InnoDB表的SELECT的效果一样。此称为“非一致的非锁定读取”

  • 相关阅读:
    Ubuntu常用命令
    Linux 虚拟机安装Ubuntu
    word 2019 方框中打勾
    apache httpd的安装和虚拟主机配置(基于centos 7)
    LoadRunner 12.5 community edition 试玩+Linux主机监控
    Directory Service目录服务
    TCP/IP脑图
    Qt样式选择器
    常见电脑进入BIOS的快捷键
    网线(RJ45接口)的接法
  • 原文地址:https://www.cnblogs.com/balaamwe/p/2359550.html
Copyright © 2011-2022 走看看