前些天在Q群里有为群友问有两个对mysql数据库的操作,一个是对某张表的数据进行删除,另一个是对另一张表的删除,两个操作加入到同一事务中,如果数据删除这步出错,事务是否会回滚?即对于表的删除会不会失效?
我当时对这个问题不是很确定,只知道DML会回滚,DDL不确定。自己编写了个小实例验证了下,结果显示:对于表的删除操作(DDL),事务不会回滚。
查了下资料,现有如下总结:
DDL:数据库定义语言,如DROP、ALTER、CREATE等等。
DML:数据库操纵语言,SQL中处理数据等操作统称为数据操纵语言。如SELECT、SAVE、DELETE、 UPDATE等。
DCL:数据控制语言,用来授予或回收访问数据库的某种特权,并控制 数据库操纵事务发生的时间及效果,对数据库实行监视等。如GRANT,COMMIT,ROLLBACK等。
因为不同的操作隐含着不同的数据提交方式,下面说一下提交数据的方式:
①显式提交:用 COMMIT 命令直接完成的提交为显式提交。
②隐式提交: 用 SQL 命令间接完成的提交为隐式提交。以下命令都是隐性提交的: ALTER , AUDIT , COMMENT , CONNECT , CREATE , DISCONNECT , DROP , EXIT , GRANT ,NOAUDIT , QUIT , REVOKE , RENAME 。
③自动提交:若把 AUTOCOMMIT 设置为 ON ,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。
所有的 DML 语句都是要显式提交的,即要在执行完DML语句之后,执行 COMMIT 。而其他的诸如 DDL 语句的,都是隐式提交的。也就是说,在运行那些非 DML 语句后,数据库已经进行了隐式提交,例如 CREATE TABLE,在运行脚本后,表已经建好了,并不在需要你再进行显式提交。所以非DML操作是不能回滚的。
DML 语句,执行完之后,要处理的数据都会放在回滚段中(除了 SELECT 语句),等待用户进行提交(COMMIT)或者回滚 (ROLLBACK),当用户执行 COMMIT / ROLLBACK后,放在回滚段中的数据就会被删除。OMMIT / ROLLBACK 都是用在执行 DML语句之后的。这也就是为什么DML语句可以回滚的原因了。而SELECT 语句执行后,数据都存在共享池。提供给其他人查询相同的数据时,直接在共享池中提取,不用再去数据库中提取,提高了数据查询的速度。
相关推荐
java 应用程序操作数据库实例,若出现sql异常则事务回滚。
例如,在执行一系列操作时如果某个步骤失败,通过回滚可以确保整个事务被撤销,防止数据库处于不稳定或不一致的状态。 ### 五、总结 通过对上述代码的分析可以看出,事务回滚机制是数据库管理中非常重要的一个环节...
回滚段,正如其名,是用来存放事务处理过程中增、删、改数据的历史信息,确保在事务回滚或数据库恢复时能正确操作。在Oracle 8i Release 8.1.7版本中,默认创建了24个回滚段,但它们初始大小较小,可能不足以应对...
`USERNAME`、`SQL_ID`和`SQL_ADDRESS`等字段则提供了与回滚事务关联的SQL语句的详细信息,这对于诊断问题和优化性能至关重要。 此外,`CONTEXT`列可能表示会话的上下文信息,`MESSAGE`列提供了有关操作的附加描述,...
在实际应用中,根据系统负载和事务特性,管理员需要监控和调整回滚段的大小和数量,以保证数据库性能并防止由于回滚段不足导致的问题。 总结起来,回滚段是Oracle数据库管理系统中关键的组件,它负责存储事务的撤销...
- **性能下降**:过大的回滚日志文件会增加I/O操作,进而降低数据库响应速度。 - **备份和恢复时间延长**:更大的数据文件意味着备份和恢复过程所需的时间也会相应增加。 ### 清理Oracle数据库回滚日志的方法 在...
在IT行业中,数据库操作是软件开发中的重要环节,尤其是在易语言这样的编程环境中。"黑月ADODB数据库操作类1.32版易语言模块源码" 提供了一种使用ADODB(ActiveX Data Objects Database)接口来处理数据库的解决方案...
一旦表空间重新上线,Oracle会从系统回滚段中提取相应的回滚信息来完成事务的回滚操作。 #### 回滚段的使用 - **分配回滚段**:事务开始时,Oracle会为该事务分配一个回滚段。通常会选择拥有最少事务的回滚段进行...
在.NET框架中,C#语言提供了对事务处理的强大支持,特别是在数据库操作中,事务回滚是确保数据一致性的重要机制。本实例将详细讲解如何在C#中实现简单的事务回滚功能,以应对在执行多条SQL语句时可能出现的错误。 ...
本文简要阐述了新建Oracle数据库回滚段具体操作过程,并且介绍了具体的操作过程和步骤。
总结来说,这个案例提供了一套完整的Excel导入流程,从读取Excel、数据校验、数据库操作到错误处理和日志记录,覆盖了数据导入过程中的关键环节。通过学习和应用这个案例,开发者可以构建出高效且可靠的Excel数据...
其中,部分回滚段处于OFFLINE状态,这通常意味着这些回滚段无法被正常使用,可能是由于错误或者维护操作导致的。 2. **回滚段大小的检查**: 另一个SQL查询用于查看回滚段的当前大小,状态以及它们所在的文件。...
事务是一组数据库操作,这些操作作为一个单元被执行,要么全部成功,要么全部失败。这四个特性——原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)——合称为ACID属性,是...
MySQL数据库在日常操作中,有时会因误操作导致数据丢失或错误,此时快速回滚到误操作前的状态显得尤为重要。本篇文章将详细讲解如何在MySQL数据库误操作后进行快速回滚,以确保数据的安全。 首先,MySQL的二进制...
当开启一个新的`TransactionScope`时,所有的数据库操作都会被包含在这个事务中。如果所有操作都成功,调用`Complete`方法提交事务;如果有任何异常,事务会自动回滚,保护了数据库的完整性。 数据校验是保证数据...
在IT领域,数据库操作是应用程序开发中的核心环节,尤其是在桌面应用和嵌入式系统中。Qt框架提供了一个强大的工具集,使得开发者可以方便地利用SQLite数据库进行数据存储和管理。本篇文章将深入探讨如何在QT5.14.2...
事务是一组数据库操作,这些操作被视为单个逻辑工作单元。如果事务中的所有操作都成功完成,那么事务就提交;如果有任何操作失败,整个事务将被回滚,这样可以确保数据库状态的一致性。在C#中,我们可以使用ADO.NET...
5. **错误处理**:在进行数据库操作时,可能会遇到各种错误,如网络问题、权限不足或SQL语法错误等。易语言提供了错误处理机制,可以捕获并处理这些错误。通常,我们需要在执行可能出错的代码块前后设置错误捕获和...
这通常涉及到跨数据库操作和分布式事务处理,确保数据的一致性和完整性。以下是一些关于这个主题的重要知识点: 1. **JTA(Java Transaction API)**:JTA是Java平台中用于处理分布式事务的标准API。它允许应用程序...
6. **BeginTransaction()和CommitTransaction()/RollbackTransaction()**:事务处理是数据库操作中的重要部分,AccessHelper可能提供开始事务、提交事务或回滚事务的方法,确保数据的一致性和完整性。 7. **Close...