热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQL事务用法begintran,committran和rollbacktran的用法

SqlServer20052008中提供了begintran,committran和rollbacktran来使用事务。begintran表示开始事务,committran表示提交事务,rollbacktran表示回滚事物

Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran来使用事务。begin tran表示开始事务, commit tran表示提交事务,rollback tran表示回滚事物

具体用法如下:
代码如下:
-- =============================================
-- Author: cynimoon
-- Create date: 2009-10-09
-- Description: 示例存储过程
-- =============================================
-- EXEC TEST_PROC '文综','包括历史,地理,政治','政治','文综的一门'
CREATE PROCEDURE [dbo].[TEST_PROC]
@A_Name NVARCHAR(20), -- A表姓名
@A_Remark NVARCHAR(4000), -- A表备注
@B_Name NVARCHAR(20), -- B表姓名
@B_Remark NVARCHAR(4000) -- B表备注
AS
BEGIN TRY
BEGIN TRAN
-- 在A表中插入数据
INSERT INTO [dbo].[A]
( [A_Name]
, [A_Remark] )
VALUES
( @A_Name
, @A_Remark )
-- 在B表中插入数据
INSERT INTO [dbo].[B]
( [A_ID]
, [B_Name]
, [B_Remark] )
VALUES
( @@IDENTITY -- 返回最后插入的标识值
, @B_Name
, @B_Remark )
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
INSERT INTO [dbo].[ErrorLog]
( [EL_Procedure] -- 异常存储过程名称
, [EL_OperateTime] ) -- 报异常时间
VALUES
( 'TEST_PROC'
, CONVERT(DATETIME,GETDATE(),20) )
END CATCH 注:1. @@IDENTITY的作用是返回最后插入的标识值。
2. 我在rollback tran中加入一个专门记录异常的表,以便产于异常发生的时间和确定报异常的存储过程的名称。
原文链接:
begin tran 可以理解成新建一个还原点。
commit tran提交这个自begin tran开始的修改
rollback tran 表示还原到上个还原点。
推荐阅读
  • 在这篇文章中,我们将深入探讨MySQL在某些情况下为什么会选择错误的索引,并从专业角度进行详细分析。通过丰富的案例和理论依据,帮助读者理解这一现象的原因及优化策略,提升数据库性能。 ... [详细]
  • 通过利用代码自动生成技术,旨在减轻软件开发的复杂性,缩短项目周期,减少冗余代码的编写,从而显著提升开发效率。该方法不仅能够降低开发人员的工作强度,还能确保代码的一致性和质量。 ... [详细]
  • Apache Hadoop HDFS QJournalProtocol 中 getJournalCTime 方法的应用与代码实例分析 ... [详细]
  • 如何有效防御网站中的SQL注入攻击
    本期文章将深入探讨网站如何有效防御SQL注入攻击。我们将从技术层面详细解析防范措施,并结合实际案例进行阐述,旨在帮助读者全面了解并掌握有效的防护策略。希望本文能为您的网络安全提供有益参考。 ... [详细]
  • 在将Excel数据导入MySQL数据库的过程中,如何确保不会生成重复记录?本文介绍了一种方法,通过PHP脚本检查数据库中是否存在相同的“Code”字段值,从而避免重复记录的产生。该方法不仅提高了数据导入的准确性,还增强了系统的健壮性。 ... [详细]
  • 针对MySQL Undo空间满载及Oracle Undo表空间溢出的问题,本文详细探讨了其原因与解决策略。首先,通过启动SQL*Plus并以SYS用户身份登录数据库,查询当前数据库的UNDO表空间名称,确认当前状态。接着,分析导致Undo空间满载的常见原因,如长时间运行的事务、频繁的更新操作等,并提出相应的解决方案,包括调整Undo表空间大小、优化事务管理、定期清理历史数据等。最后,结合实际案例,提供具体的实施步骤和注意事项,帮助DBA有效应对这些问题。 ... [详细]
  • 在使用 SQLAlchemy 时,笔者偶然发现了一个关于 `NULL` 比较的有趣现象。具体来说,当使用 `Column(x).is_(null())` 进行比较时,其行为与预期有所不同。本文将深入探讨这一问题,并提出相应的解决方案,以确保在处理 `NULL` 值时代码的可交换性和一致性。 ... [详细]
  • Vi编辑器的工作模式有哪些?如何在不同模式间切换?
    Vi编辑器是Linux系统中常用的文本编辑工具,具备三种主要工作模式:命令模式、插入模式和底行模式。用户可以通过特定的按键组合在这些模式之间进行切换,以实现不同的编辑功能。例如,在命令模式下,用户可以执行移动光标、删除文本等操作;而在插入模式下,则可以输入或修改文本内容。底行模式则用于执行保存文件、退出编辑器等命令。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • 本文探讨了在使用UPDATE语句时,通过子查询在WHERE条件中处理多个ID的常见问题及解决方案。具体而言,当需要根据主键ID更新数据表中的记录时,如果传入的ID不止一个,而是多个,如何高效且准确地进行更新操作。文章详细分析了子查询在WHERE条件中的应用,并提供了多种优化方案,以确保数据更新的准确性和性能。 ... [详细]
  • 资源管理器的基础架构包括三个核心组件:1)资源池,用于将CPU和内存等资源分配给不同的容器;2)负载组,负责承载任务并将其分配到相应的资源池;3)分类函数,用于将不同的会话映射到合适的负载组。该系统提供了两种主要的资源管理策略。 ... [详细]
  • 在本节课程中,我们将深入探讨 JSP 编程中的实际案例,通过具体代码示例 `code316.java` 来解析数据库连接的实现。该示例展示了如何使用 Java 的 JDBC API 进行数据库操作,包括加载数据库驱动、建立连接等关键步骤。通过本课程的学习,读者将能够更好地理解和应用 JSP 中的数据库连接技术。 ... [详细]
  • 在深入掌握Spring框架的事务管理之前,了解其背后的数据库事务基础至关重要。Spring的事务管理功能虽然强大且灵活,但其核心依赖于数据库自身的事务处理机制。因此,熟悉数据库事务的基本概念和特性是必不可少的。这包括事务的ACID属性、隔离级别以及常见的事务管理策略等。通过这些基础知识的学习,可以更好地理解和应用Spring中的事务管理配置。 ... [详细]
  • 本文探讨了如何在C#应用程序中通过选择ComboBox项从MySQL数据库中检索数据值。具体介绍了在事件处理方法 `comboBox2_SelectedIndexChanged` 中可能出现的常见错误,并提供了详细的解决方案和优化建议,以确保数据能够正确且高效地从数据库中读取并显示在界面上。此外,还讨论了连接字符串的配置、SQL查询语句的编写以及异常处理的最佳实践,帮助开发者避免常见的陷阱并提高代码的健壮性。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
author-avatar
挠挠扣扣笑嘻嘻
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有