BEGIN TRAN...COMMIT TRAN 意思与用法;
BEGIN TRAN标记事务开始
COMMIT TRAN 提交事务
一般把DML语句(select ,delete,update,insert语句)放在BEGIN TRAN...COMMIT TRAN 之间作为一个事务处理
也就是那些语句执行过程中如果遇到错误,无论哪句遇到错误,所有语句都会回滚到BEGIN TRAN之前的状态。
这个是事务处理。
例如你需要更新一个数据,但是这个数据存在于两个表内,你需要用两个update语句。如果第一个执行成功,第二个由于某种原因执行失败,将导致这个数据的不一致。数据库的数据就出错了。
如果想要避免,就用BEGIN TRAN...COMMIT TRAN ,把这两个update写在中间,如果发生如上的事情,第一个update的数据,将被退回,即没有被更新。你收到错误信息,就知道更新完全没有进行,不需要考虑部分更新的情况。
如果仅仅是查询就不需要这个。
BEGIN TRAN标记事务开始
COMMIT TRAN 提交事务
一般把DML语句(select ,delete,update,insert语句)放在BEGIN TRAN...COMMIT TRAN 之间作为一个事务处理
也就是那些语句执行过程中如果遇到错误,无论哪句遇到错误,所有语句都会回滚到BEGIN TRAN之前的状态。
语法
BEGIN { TRAN | TRANSACTION } [ { transaction_name | @tran_name_variable } [ WITH MARK [ 'description' ] ] ][ ; ]
BEGIN TRANSACTION 代表一点,由连接引用的数据在该点逻辑和物理上都一致的。如果遇上错误,在 BEGIN TRANSACTION 之后的所有数据改动都能进行回滚,以将数据返回到已知的一致状态。每个事务继续执行直到它无误地完成并且用 COMMIT TRANSACTION 对数据库作永久的改动,或者遇上错误并且用 ROLLBACK TRANSACTION 语句擦除所有改动。
BEGIN TRANSACTION 为发出本语句的连接启动一个本地事务。根据当前事务隔离级别的设置,为支持该连接所发出的 Transact-SQL 语句而获取的许多资源被该事务锁定,直到使用 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 语句完成该事务为止。长时间处于未完成状态的事务会阻止其他用户访问这些锁定的资源,也会阻止日志截断。
虽然 BEGIN TRANSACTION 启动一个本地事务,但是在应用程序接下来执行一个必须记录的操作(如执行 INSERT、UPDATE 或 DELETE 语句)之前,它并不被记录在事务日志中。应用程序能执行一些操作,例如为了保护 SELECT 语句的事务隔离级别而获取锁,但是直到应用程序执行一个修改操作后日志中才有记录。
在一系列嵌套的事务中用一个事务名给多个事务命名对该事务没有什么影响。系统仅登记第一个(最外部的)事务名。回滚到其他任何名称(有效的保存点名除外)都会产生错误。事实上,回滚之前执行的任何语句都不会在错误发生时回滚。这些语句仅当外层的事务回滚时才会进行回滚。
如果在语句提交或回滚之前执行了如下操作,由 BEGIN TRANSACTION 语句启动的本地事务将升级为分布式事务:
执行一个引用链接服务器上的远程表的 INSERT、DELETE 或 UPDATE 语句。如果用于访问链接服务器的 OLE DB 访问接口不支持 ITransactionJoin 接口,则 INSERT、UPDATE 或 DELETE 语句会失败。
当启用了 REMOTE_PROC_TRANSACTIONS 选项时,将调用远程存储过程。
分享到:
相关推荐
以下是对部分DB2常见SQL问题及其解释的详细阐述,旨在帮助数据库管理员和技术人员更深入地了解这些问题,并提供有效的解决方案。 ### 1. 警告信息与错误代码 DB2通过一系列的错误代码(如SQL0001N至SQL0157N)来...
SQL问题合集
SQL面试问题集通常包含多种级别的SQL问题,从基础知识点到高级概念,这些问题旨在考察求职者对SQL的掌握程度以及他们解决数据库相关问题的能力。 在数据库领域中,SQL语言是核心技能之一。尽管SQL语言有标准规范,...
解决日常编程问题的解决方案的数量仅取决于需要解决的问题的数量,《SQL Cookbook中文版》没有覆盖所有问题,事实上也不可能覆盖;然而从中可以找到许多共同的问题及其解决方案,这些解决方案中用到许多技巧,读者学...
解决SQL问题的具体技术 - **体系结构**:了解数据库的整体架构对于优化至关重要。 - **逻辑结构**:合理设计表的逻辑结构能够有效提升查询效率。 - **表设计**:正确的表设计可以减少不必要的查询复杂度。 - **索引...
SQL 语法与问题集 通用办公生产应用程序。 使用图形用户界面 (GUI) 的应用程序,使用户得以选择包含要查看的数据的表和列。 使用通用语言语句确定用户所要查看数据的应用程序。 将其数据存储于 SQL ...
- 诊断和修复T-SQL问题 - 批量编辑SQLServer存储过程 - SQLServer 2005中升级存储过程 6. 存储过程修改与变更:在对SQLServer存储过程进行修改和变更时,可能会遇到与现有数据库函数冲突的问题,需要掌握正确的...
错误提示
"SQL.Cookbook.pdf"可能是一本实用的SQL问题解决方案集,它通常包含各种实际场景下的SQL查询示例和最佳实践: 1. **查询技巧**:提供解决特定查询问题的“食谱”,如聚合函数、窗口函数、集合运算和联接策略。 2. ...
例如,假如你有一个特定的业务问题要解决,目前只用SQL检索数据,而其他复杂的业务逻辑由其他语言完成,如果代码没有问题,而且性能也过得去,那么,谢天谢地。我绝对无意建议你扔掉以前的代码重新寻求完全SQL 的...
一个Sql难题,不知道如何解决。在论坛中发贴求解.
本书的章节1“Introduction”引入了讨论的主题,即在实践中遇到的SQL问题和不良模式。作者通过拒绝只支持SELECT语句的SQL工作来阐述一个观点:即使只是SQL的一个小部分,也可能涉及到复杂性和潜在的问题。SELECT语句...
10. **问题解答与分析方法**:作者分享了解决SQL问题的策略和思考过程,帮助读者培养解决问题的能力,提升SQL编程水平。 通过对《SQL解惑(第2版)》的学习,无论是初学者还是有一定经验的数据库管理员,都能从中...
这可能是一个文本文件,包含了关于SQL的学习资源推荐,比如经典的SQL教材、在线课程链接或者是各种SQL问题的解答。用户可以通过阅读这个文件来获取一些学习路径的建议,了解哪些知识点是重点,以及如何有效地学习和...
SQL问题则涵盖语法错误、复杂查询的优化以及未优化的JOIN操作等。 数据库系统中,SQL语句首先被服务器接收,然后进行解析。数据库的优化器会根据语句内容生成多种可能的执行计划,并对每个计划的成本进行估计,最终...
在这场SQL争霸赛中,参赛者们面临的是各种各样的SQL问题,涵盖了基础语法、高级查询技巧、数据库设计和性能优化等多个方面。这些问题旨在考察参赛者对SQL语言的全面掌握程度,包括但不限于对基础查询语句的编写、...
在探讨SQL性能优化的过程中,作者将SQL问题的解决比作战争策略的制定。正如古代将领需遵循《孙子兵法》中的原则来指挥战争,现代开发者也应遵循一系列原则来优化SQL代码。这些原则既包括技术层面的知识,如索引选择...
3. **《SQL Cookbook》**:这本书更像一本SQL问题解决方案的集合,它提供了大量解决实际问题的代码片段,覆盖了SQL的各个方面,如数据筛选、排序、分组、联接、窗口函数等。书中强调实践,帮助读者在面对实际工作中...