• 14.5.2.2 autocommit, Commit, and Rollback


    14.5.2.2 autocommit, Commit, and Rollback 
    
    在InnoDB,所有的用户活动发生在一个事务里, 如果自动提交模式是启用的,
    
    每个SQL语句形成一个单独的事务。默认情况下, 
    
    MySQL开启一个session用于每个新的连接在自动提交启用的情况下,
    
    因此MySQL 做一个提交在每个SQL语句如果语句不返回错误。
    
    
    一个session 启用自动提交可以执行一个多语句的事务通过使用一个显示的START TRANSACTION or BEGIN statement 
    
    结束使用COMMIT or ROLLBACK statement.
    
    
    如果自动提交模式是被禁用 使用一个会话  SET autocommit = 0,
    
    session 总是会打开一个事务会话。 一个COMMIT 或者ROLLBACK语句 结束当前的事务 然后开启一个新的
    
    
    如果一个会话有自动提交关闭 结束没有一个显示的提交最终的事务, MySQL 回滚那个事务
    
    
    某些语句显示的借宿事务,如果你做了一个commit 在执行语句前
    
    
    使用事务匹配提交:
    
    默认情况下,一个连接到MySQL server 会开启自动提交,这个会自动提交每个SQL语句当你执行它时。
    
    
    这种操作的模式可能不熟悉如果你有其他数据库的经验, 是标准的执行一系列DML语句 提交它们或者回滚它们
    
    
    使用多语句事务,切换自动提交关闭使用SQL语句SET autocommit = 0 
    
    然后结束事务使用COMMIT 或者ROLLBACK 。
    
    如果开启自动提交, 开始每个事务 使用 START TRANSACTION 使用COMMIT或者ROLLBACK结束
    
    
    下面的例子显示2个事务,第1个是提交的,第2个是回滚的
    
    shell> mysql test
    
    mysql> CREATE TABLE customer (a INT, b CHAR (20), INDEX (a));
    Query OK, 0 rows affected (0.00 sec)
    mysql> -- Do a transaction with autocommit turned on.
    mysql> START TRANSACTION;
    Query OK, 0 rows affected (0.00 sec)
    mysql> INSERT INTO customer VALUES (10, 'Heikki');
    Query OK, 1 row affected (0.00 sec)
    mysql> COMMIT;
    Query OK, 0 rows affected (0.00 sec)
    mysql> -- Do another transaction with autocommit turned off.
    mysql> SET autocommit=0;
    Query OK, 0 rows affected (0.00 sec)
    mysql> INSERT INTO customer VALUES (15, 'John');
    Query OK, 1 row affected (0.00 sec)
    mysql> INSERT INTO customer VALUES (20, 'Paul');
    Query OK, 1 row affected (0.00 sec)
    mysql> DELETE FROM customer WHERE b = 'Heikki';
    Query OK, 1 row affected (0.00 sec)
    mysql> -- Now we undo those last 2 inserts and the delete.
    mysql> ROLLBACK;
    Query OK, 0 rows affected (0.00 sec)
    mysql> SELECT * FROM customer;
    +------+--------+
    | a    | b      |
    +------+--------+
    |   10 | Heikki |
    +------+--------+
    1 row in set (0.00 sec)
    mysql>
    
    

  • 相关阅读:
    04-struts2框架中获取servlet api及Result结果类型
    03-Action类的创建方式及访问
    一位资深程序员大牛给予Java初学者的学习建议(转)
    C++中数组指针
    Ubuntu 开机出现 grub rescue> 终端模式修复方法
    windows和linux双系统下扩容方法
    C 字符串处理
    C++类中变量定义初始化总结
    python创建xml
    OpenBlas compile centOS6.7 ./kernel/x86_64/dgemm_kernel_4x4_haswell.S:2548: Error: no such instruction: `vpermpd $
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199077.html
Copyright © 2020-2023  润新知