`
chenxueyong
  • 浏览: 341972 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

数据库触发器与事务

阅读更多

当对数据库中的一张表进行操作且同时又要对与之相关的其他表的数据进行修改时,要如何操作呢?一种方法是写出每一个操作的SQL语句,然后逐一执行。但是,如果碰到银行转账这种业务,我们需要先从A帐户扣钱,然后给B帐户加钱。若A帐户扣钱成功但是B帐户加钱失败,我们还得再多写一条SQL用以在失败的时候再把A的钱给加上。这样太麻烦而且需要我们在底层写很多数据库操作代码,容易出错也不安全。
此时就可以用触发器与事务来处理,当对A帐户进行修改时自动触发执行对B帐户的修改,并且当其中任何一个操作失败时,事务会自动回滚,取消之前所有的操作,这样就无形的减少了不少代码及安全隐患。
我所做的项目就有这样的一个需要:有一个文章表和一个文章类别表,文章类别表中有个字段用于存储该类别下的文章数量。所以,增加或删除一篇文章同时需要对类别表进行修改,只需要使用如下的代码创建一个触发器即可。

 
  1. CREATE TRIGGER trig_Article_Ins–开始创建触发器
  2. ON dbo.blog_Article–指明要对哪个表创建
  3. FOR INSERT–创建INSERT类型的触发器
  4. AS
  5. BEGIN TRANSACTION–开始事务
  6.     DECLARE @cateId int,@errorSum int–声明变量,分别用于存储类别ID和错误统计
  7.     SET @errorSum = 0–错误统计初值为0
  8.     SELECT @cateId=log_CateID FROM inserted–查到新插入的文章的类别ID
  9.     SET @errorSum=@errorSum+@@ERROR–累计错误
  10.     UPDATE blog_Category SET cate_Count=cate_Count+1 WHERE cate_ID=@cateId–对相应的表进行更新
  11.     SET @errorSum=@errorSum+@@ERROR–累计错误
  12.     
  13.     IF @errorSum <> 0–若执行期间出现错误则回滚,否则提交事务
  14.         BEGIN
  15.             print ‘创建失败,回滚事务!’
  16.             ROLLBACK TRANSACTION
  17.         END
  18.     ELSE
  19.         BEGIN
  20.             print ‘创建成功,提交事务!’
  21.             COMMIT TRANSACTION
  22.         END
  23. GO

 

另外,使用这个还有另外一个原因:好久没有写过这些东西了,该练练手了。所以,今天在编写这个触发器的时候还小查了一下帮助手册。

分享到:
评论

相关推荐

    SQL数据库触发器 SQL数据库触发器

    SQL数据库触发器的实际应用 触发器是一种特殊类型的存储过程,不由用户直接调用。当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT 或DELETE。触发器可以查询其它表,...

    数据库的触发器实验报告书

    数据库触发器是数据库管理系统中的一种重要机制,它允许在特定的数据操作语言(DML)事件发生时自动执行一段预定义的SQL代码。本实验报告主要围绕如何理解和运用触发器,特别是针对数据完整性的维护,以及在...

    大型数据库触发器介绍

    【大型数据库触发器介绍】 数据库触发器是数据库管理系统中的一种特殊程序,它在特定的事件(如INSERT、UPDATE或DELETE操作)发生时自动执行,用于实现业务规则或复杂的数据约束。在ORACLE和SYBASE这样的大型数据库...

    数据库触发器是一种存储过程

    数据库触发器是数据库管理系统中的一种重要机制,它们本质上是预定义的存储过程,可以在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行。SQL Server提供了对触发器的支持,允许用户根据需要创建和定制...

    SQL数据库触发器练习题

    以下是对SQL数据库触发器的详细讲解: 1. 触发器类型: - INSERT触发器:在向表中插入新记录时触发。 - UPDATE触发器:当对表中的记录进行更新时触发。 - DELETE触发器:在删除表中的记录时触发。 2. 触发器的...

    数据库触发器、存储过程、事务管理PPT

    数据库触发器、存储过程和事务管理是数据库管理系统中的核心概念,它们在数据处理和业务逻辑实现中扮演着重要角色。让我们深入探讨这三个主题。 首先,我们来看“触发器”。触发器是一种特殊的数据库对象,它在特定...

    第12章 数据库触发器PPT

    数据库触发器是数据库管理系统中一个重要的特性,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生之前或之后自动执行预定义的SQL代码或存储过程。这章PPT内容可能涵盖了触发器的基本概念、类型、用途以及...

    oracle 数据库 触发器

    Oracle 数据库触发器是数据库管理系统中的一个重要特性,用于在特定事件发生时自动执行预定义的SQL语句或PL/SQL代码块。Oracle 9i版本引入了多种类型的触发器,这些触发器允许开发者实现复杂的业务逻辑和数据完整性...

    MS SQL SERVER数据库触发器技术的实际应用.pdf

    MS SQL SERVER数据库触发器技术的实际应用 本文将讨论MS SQL SERVER数据库触发器技术的实际应用,涵盖触发器技术的基本概念、特点和实际应用场景。 首先,让我们了解什么是触发器。触发器是一种特殊的存储过程,它...

    数据库实例整理包括 触发器 事务

    ### 数据库实例整理包括触发器与事务的关键知识点 #### 触发器实例解析 ##### 更新触发器示例 - **背景介绍**: - 在数据库管理中,有时我们需要确保两个或多个表之间的数据一致性。例如,当某个表的数据发生...

    数据库触发器(Trigger)的一点使用心得

    数据库触发器(Trigger)是数据库管理系统提供的一种机制,允许在特定的数据操作(如INSERT、UPDATE、DELETE)之前或之后执行自定义的逻辑。触发器在数据库层面上实现了业务规则和数据完整性,使得开发者可以在数据库...

    浅谈SOL SERVER数据库触发器及应用.pdf

    它们的结构总是与触发器作用的数据表结构相同,用于检查数据更新的影响,并为触发器动作提供条件。 在不同的SQL操作下,这两个表的数据变化情况如下: - Insert操作:新插入的行会被同时加到inserted表和触发器表中...

    mysql-事件,触发器,事务-实验七.docx

    MySQL 事件、触发器、事务实验报告 MySQL 事件调度器是 MySQL 中的一种机制,可以根据指定的时间间隔执行特定的 SQL 语句。事件调度器有两个优点:一是可以用于定期统计、清理、检查等操作;二是可以提高数据库的...

    神通数据库-数据库快速入门.pdf

    神通数据库触发器按照所触发动作的间隔尺寸可以分为语句级触发器和行 级触发器。触发器由 CREATE TRIGGER 语句定义,FOR EACH 子句定义了触发动作的间隔尺寸,它既 可以是 FOR EACH STATEMENT(语句级触发器),也...

    触发器、事务,存储过程、视图_T-SQL语句

    在SQL Server 2005中,触发器、事务、存储过程和视图是数据库管理中的核心概念,它们对于数据库的高效运作和数据完整性至关重要。这些T-SQL语句是数据库开发人员和管理员日常工作中不可或缺的工具。 首先,让我们...

    数据库原理与技术触发器和存储过程

    数据库原理与技术是IT领域中的核心课程之一,它涉及到数据的组织、管理和访问。在数据库系统中,存储过程和触发器是两个非常重要的概念,它们极大地增强了数据库的功能和灵活性。 **存储过程(Stored Procedures)*...

    sql 数据库触发器

    SQL 数据库触发器是数据库管理系统中的一个重要特性,用于在特定的数据操作语言(DML)或数据定义语言(DDL)事件发生时自动执行预定义的逻辑。它们是存储过程的一种特殊形式,但与常规存储过程不同,因为触发器不是...

    数据库原理与应用之视图和触发器

    然而,过度使用触发器可能会导致性能问题,因为它们增加了数据库处理事务的复杂性。 在学习"数据库原理与应用之视图和触发器"时,通常会涉及以下几个知识点: 1. 视图的创建与修改:如何使用SQL语句(如CREATE ...

    数据库之—用触发器实现每个学生最多只能选择3门课程

    ### 一、触发器的概念与用途 触发器是SQL Server中一种特殊的存储过程,当指定的事件(如INSERT、UPDATE或DELETE)发生时,它会自动执行。触发器主要用于强制执行复杂的业务规则或者数据完整性约束,确保对数据库的...

    SQL Server数据库触发器概述

    通过深入了解和正确使用SQL Server数据库触发器,你可以更好地管理和保护你的数据,确保其符合业务需求和数据完整性标准。在实践中,结合标签中的"DBA"角色,数据库管理员应熟练掌握触发器的运用,以便在日常维护和...

Global site tag (gtag.js) - Google Analytics