【重学 MySQL】四十八、DCL 中的 commit 和 rollback

news2024/12/24 7:57:57

【重学 MySQL】四十八、DCL 中的 commit 和 rollback

  • commit的定义与作用
  • rollback的定义与作用
  • 使用场景
  • 相关示例
  • 注意事项
  • DDL 和 DML 的说明

在这里插入图片描述
在MySQL中,DCL(Data Control Language,数据控制语言)用于管理数据库用户和控制数据的访问权限。而commit和rollback并不是DCL的专属命令,但它们在与事务处理相关的上下文中非常重要。

commit的定义与作用

定义
commit是SQL中的一个事务控制命令,用于提交事务处理,即将自事务开始以来所做的所有更改永久保存到数据库中。

作用

  • 永久保存数据更改:一旦执行commit,事务中的所有更改都将被写入数据库,并且这些更改在之后无法被回滚。
  • 结束当前事务:commit操作标志着当前事务的结束,之后的所有操作都将被视为新的事务。

rollback的定义与作用

定义
rollback也是SQL中的一个事务控制命令,用于回滚事务处理,即撤销事务中的所有更改,并将数据库状态恢复到事务开始之前的状态。

作用

  • 撤销数据更改:rollback可以撤销自事务开始以来所做的所有更改,包括插入、更新和删除操作。
  • 保持数据一致性:在事务处理过程中,如果发生错误或需要取消某些操作,rollback可以确保数据库状态的一致性。

使用场景

  • commit的使用场景

    • 当事务中的所有操作都成功完成,并且需要将这些更改永久保存到数据库时,使用commit。
    • 在进行批量数据插入、更新或删除操作时,为了确保数据的一致性和完整性,可以在操作完成后使用commit。
  • rollback的使用场景

    • 当事务中的某个操作失败,或者由于某种原因需要取消整个事务时,使用rollback。
    • 在进行复杂的事务处理时,如果某个步骤出错,可以使用rollback将数据库状态恢复到事务开始之前的状态,以便重新尝试事务或进行其他处理。

相关示例

以下是一个简单的MySQL事务处理示例,展示了commit和rollback的使用:

-- 开始事务
START TRANSACTION;

-- 执行一些SQL操作
INSERT INTO employees (name, position) VALUES ('Alice', 'Engineer');
UPDATE employees SET position = 'Manager' WHERE name = 'Bob';

-- 检查操作是否成功
-- 假设这里有一个条件判断,如果某个操作失败,则回滚事务
-- 例如:IF some_error_condition THEN ROLLBACK; END IF;
-- 在实际的SQL脚本中,这通常通过编程语言(如Python、Java等)的逻辑控制来实现

-- 如果所有操作都成功,则提交事务
COMMIT;

-- 如果发生错误,则回滚事务(这里的回滚操作是假设性的,实际使用时需要在错误处理逻辑中执行)
-- ROLLBACK;

在上面的示例中,如果INSERTUPDATE操作都成功完成,并且没有发生任何错误,那么执行COMMIT会将这些更改永久保存到数据库中。如果某个操作失败或需要取消事务,则可以在错误处理逻辑中执行ROLLBACK,以撤销所有已执行的更改。

注意事项

  • 在使用事务处理时,请确保所有相关的数据库操作都在同一个事务块内执行,以便能够正确地使用commit和rollback来控制事务的提交和回滚。
  • 在执行commit或rollback之前,请确保已经正确地处理了所有可能的错误和异常情况,以避免数据的不一致性和丢失。
  • 对于涉及多个表或复杂业务逻辑的事务处理,建议在进行commit之前进行充分的测试和验证,以确保事务的正确性和可靠性。

综上所述,commit和rollback是MySQL中非常重要的事务控制命令,它们能够确保数据的一致性和完整性,并在事务处理过程中提供灵活的错误处理机制。

DDL 和 DML 的说明

  • DDL 的操作一旦执行,就不可回滚,指令 set autocommit = FALSE 对 DDL 失效
  • DML 的操作默认情况,一旦执行,也是不可回滚的。但是,如果在执行 DML 之前,执行了 set autocommit = FALSE,则执行的 DML 操作就可以实现回滚

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2184750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu 安装RUST

官方给的是这样如下脚本 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh 太慢了 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh -x 执行这个脚本后会给出对应的下载链接 如下图 我直接给出来 大多数应该都是这个 https://static.rust-…

初识算法 · 双指针(1)

目录 前言: 双指针算法 题目一: ​编辑 题目二: 前言: 本文作为算法部分的第一篇文章,自然是少不了简单叭叭两句,对于算法部分,多刷是少不了,我们刷题从暴力过度到算法解法,自…

csp-j模拟二补题报告

目录传送门 前言第一题下棋(chess)我的代码(AC了)AC代码 第二题汪洋(BigWater)我的代码(0)AC代码 第三题删数(delnum)我的代码(0)AC代…

秋招突击——9/13——携程提前准备和实际面经——专程飞过去线下,结果一面挂(难受)

文章目录 引言面经收集面经整理一1. ArrayList和LinkedList2. 线程安全的列表和链表有么?如果没有怎么实现?3. threadlocal4. synchronized锁升级过程及原理5. ReentrantLock原理,以及和synchronized的对比6. 线程池工作原理7. redis常用数据…

数据流和数据流处理技术

一数据流 首先明确数据流概念:数据流是连续不断生成的、快速变化的无界数据序列 数据流类型: 数据流大致可以分为四种类型 1.连续型数据流:不断地产生数据,数据稳定速度输入系统。 2.突发型数据流:在某特定时间或…

【吊打面试官系列-MySQL面试题】Mysql如何存储日期?

大家好,我是锋哥。今天分享关于【Mysql如何存储日期?】面试题,希望对大家有帮助; Mysql如何存储日期? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Datatime:以 YYYY-MM-DD HH:MM:SS 格式存储时期时间&a…

基于Spring Boot+Unipp的中考体测训练小程序(协同过滤算法、图形化分析)【原创】

🎈系统亮点:协同过滤算法、图形化分析; 一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构:B/S架构 运行环境:win10/win11、jdk17 前端: 技术:框…

C++中stack和queue的模拟实现

目录 1.容器适配器 1.1什么是适配器 1.2STL标准库中stack和queue的底层结构 1.3deque的简单介绍 1.3.1deque的原理介绍 1.3.2deque的优点和缺陷 1.3.3deque和vector进行排序的性能对比 1.4为什么选择deque作为stack和queue的底层默认容器 2.stack的介绍和模拟…

c++-类和对象-点和圆关系

注意: 1.在一个类中可以让另一个类作为成员 2.可以把一个类拆成过个头文件,在.cpp中写成员函数实现,在头文件中留下类的声明和属性 实践 结果

我谈陷波滤波器

《数字图像处理(电子信息前沿技术丛书)》PP180~182勘误。 陷波滤波器在信号处理中就是带阻滤波器,信号处理中陷波滤波器不是这样定义的,二维比一维有这样的特殊性,我想这是Gonzalez创造的概念,在学术中借用…

初识算法 · 双指针(2)

目录 前言: 盛最多水的容器 题目解析: 算法原理: 算法编写: 有效三角形的个数 题目解析: 算法原理: 算法编写: 前言: 本文介绍两个题目,盛最多水的容器和有效三…

Excel下拉菜单制作及选项修改

Excel下拉菜单 1、下拉菜单制作2、下拉菜单修改 下拉框(选项菜单)是十分常见的功能。Excel支持下拉框制作,通过预设选项进行菜单选择,可以避免手动输入错误和重复工作,提升数据输入的准确性和效率 1、下拉菜单制作 步…

留存率的定义与SQL实现

1.什么是留存率 留存率是指在特定时间段内,仍然继续使用某项产品或服务的用户占用户总数的百分比。 通常,留存率会以日,周,或月为单位进行统计和分析。 2.SQL留存率常见问题 1.计算新用户登录的日期的次日留存率以及3日留存率 …

【鸿蒙学习】深入了解UIAbility组件

文章目录 组件概述生命周期启动模式基本用法 在鸿蒙操作系统(HarmonyOS)的开发过程中,UIAbility组件是构建应用界面的关键。本文将带您了解UIAbility组件的概述、生命周期、启动模式以及基本用法,并通过代码示例帮助您更好地掌握这…

微信互助学习平台|互助学习平台系统|基于java的微信互助学习平台设计与实现(源码+数据库+文档)

微信互助学习平台 目录 基于java的微信互助学习平台设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师…

论文阅读- On the Feasibility of Fully AI-automated Vishing Attacks

https://arxiv.org/pdf/2409.13793 目录 摘要 INTRODUCTION II. GOALS AND THREAT MODEL III. VIKING A. Architecture B. Interaction with the LLM C. Audio processing D. Call processing E. Implementation IV. EVALUATION METHODOLOGY A. Experiment design …

NeRF三维重建—神经辐射场

NeRF—神经辐射场 本文介绍了三维重建相关技术,特别是神经辐射场(NeRF)的进步,它通过深度学习实现逼真的三维场景重建。NeRF在计算机图形学、自动驾驶和元宇宙等领域展现出广阔的应用前景,通过改进传统方法,提供更高质量的渲染和沉…

聊聊国内首台重大技术装备(1)

9.9日,工信部发布了《首台(套)重大技术装备推广应用指导目录(2024年版)》,在集成电路领域,公布了如下首台机台设备,这确实是一个十分振奋人心的消息,说明我国在半导体制造…

LSTM模型实现光伏发电功率的预测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色…

构造函数继承

构造函数继承 主要通过在子类的构造函数中调用父类的构造函数,绑定子类实例的 this,从而实现子类对父类属性的继承。这种方法避免了父类和子类共享原型链上的属性,并且可以传递参数给父类的构造函数。 构造函数继承的实现步骤: …