• 技术文章 >数据库 >mysql教程

    MySQL学习之事务控制

    coldplay.xixicoldplay.xixi2021-04-07 09:32:19转载136

    什么是事务控制

    事务是指作为一个逻辑工作单元执行的一系列操作,这些操作要么全部成功要么全部失败。事务确保了多个数据的修改作为一个单元来处理。

    假如,张三在ATM机上给李四转账100元,在银行的业务系统中,主要会执行两步数据变更操作:

    1. 从张三的账户减去100元
    2. 给李四的账户增加100元

    试问,如果操作1执行成功,操作2执行失败会发生什么?

    相关免费学习推荐:mysql视频教程

    事务的四个特性

    如果某个数据库支持事务,那么该数据库必须具备ACID四个特性,即Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。

    MySQL的事务控制

    默认情况下,MySQL是自动提交事务的,即每一条INSERT、UPDATE、DELETE的SQL语句提交后会立即执行COMMIT操作。因此,要开启一个事务,可以使用start transactionbegin,或者将autocommit的值设置为0.

    例子

    1. 登陆数据库,使用student数据库并查看所有的数据表
    USE student;SHOW TABLES;

    在这里插入图片描述
    2. 创建bank_account数据表并插入两条记录,设置张三的balance字段值+1000

    CREATE TABLE bank_account(
    	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	name VARCHAR(30) COMMENT '姓名',
    	balance DECIMAL(18, 2) COMMENT '账户余额');INSERT INTO bank_account(id, name, balance) VALUE(1, '张三', 0);INSERT INTO bank_account(id, name, balance) VALUE(2, '李四', 0);UPDATE bank_account SET balance = balance + 1000 WHERE id = 1;

    在这里插入图片描述
    3. 查看默认的autocommit值

    SELECT @@autocommit;

    在这里插入图片描述
    4. 查看bank_account数据表所有记录

    SELECT * FROM bank_account;

    在这里插入图片描述
    5. 开始事务控制并执行两条SQL语句

    START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;COMMIT;

    在这里插入图片描述
    6. 查看此时数据表的内容

    SELECT * FROM bank_account;

    在这里插入图片描述
    7. 再次开始事务控制,同样插入两条一样的SQL语句,但将commit(提交)变为rollback(回滚)

    START TRANSACTION;UPDATE bank_account SET balance = balance - 100 WHERE id = 1;UPDATE bank_account SET balance = balance + 100 WHERE id = 2;ROLLBACK;

    在这里插入图片描述
    8. 再次查看数据表内容,发现回滚之后数据无变化

    SELECT * FROM bank_account;

    在这里插入图片描述
    注:本文是博主MySQL学习的总结,不支持任何商用,转载请注明出处!如果你也对MySQL学习有一定的兴趣和理解,欢迎随时找博主交流~

    更多相关免费学习推荐:mysql教程(视频)

    以上就是MySQL学习之事务控制的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:MySQL 事务控制
    上一篇:重温MySQL锁机制 下一篇:详解MySql 整体结构
    第15期线上培训班

    相关文章推荐

    • php中对MYSQL操作之事务控制,回滚• php+mysqli事务控制实现银行转账实例_PHP教程• MySQL精讲之四:TCL事务控制语句• 介绍MySQL和JDBC的事务控制(TCL)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网