`
ajuanlong
  • 浏览: 108077 次
社区版块
存档分类
最新评论

详解SQL中的触发器

 
阅读更多

  • 原因
  • 触发器
    • 简介
    • 分类
    • INSERTED和DELETED
    • 优缺点
  • 语法
    • 建立触发器
    • 删除触发器
    • 修改触发器
    • 开启和禁用
    • 提醒和保护
  • 示例

原因

今天看教程再次提及触发器,以前看数据库视频、牛腩视频、天轰穿都讲到过触发器,而只知道触发器的几个简单应用,感觉学的甚差,所以借此机会仔细学学触发器。

触发器

触发器简介:

触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行操作( insert,delete, update)时就会激活它执行,触发器经常用于加强数据的完整性约束和业务规则等。在我看来触发器实际上就是一个事件,就像C#中,点击一个按钮会触发相应的操作。

触发器的分类:

(1)DML(数据操纵语言 Data Manipulation Language)触发器:是指触发器在数据库中发生DML事件时将启用。DML事件即指在表或视图中修改数据的insert、update、delete语句。
(2)DDL(数据定义语言 Data Definition Language)触发器:是指当服务器或数据库中发生(DDL事件时将启用。DDL事件即指在表或索引中的create、alter、drop语句也。
(3)登陆触发器:是指当用户登录SQL SERVER实例建立会话时触发。

其中DML触发器最为常用,根据DML触发器触发的方式不同又分为以下两种情况:

(1)AFTER触发器:它是在执行INSERT、UPDATE、DELETE语句操作之后执行触发器操作。它主要是用于记录变更后的处理或检查,一旦发生错误,可以用Rollback Transaction语句来回滚本次扣件,不过不能对视图定义AFTER触发器。
(2)INSTEAD OF触发器:它在执行INSERT、UPDATE、DELETE语句操作之前执行触发器本身所定义的操作。而INSTEAD OF触发器是可以定义在视图上的。

INSERTED和DELETED

在SQL SERVER 2008中,DML触发器的实现使用两个逻辑表DELETED和INSERTED。这两个表是建立在数据库服务器的内存中,我们只有只读的权限。DELETED和INSERED表的结构和触发器所在的数据表的结构是一样的。当触发器执行完成后,它们也就会被自动删除:INSERED表用于存放你在操件insert、update、delete语句后,更新的记录。比如你插入一条数据,那么就会把这条记录插入到INSERTED表:DELETED表用于存放你在操作 insert、update、delete语句前,你创建触发器表中数据库。比如你原来的表中有三条数据,那么他也有三条数据。也就是说,我们可以使用这两个临时的驻留内存的表,测试某些数据修改的效果及设置触发器操作的条件。

触发器的优缺点:

触发器可通过数据库中的相关表实现级联更改,可以强制比用CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列,例如触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作。触发器也可以根据数据修改前后的表状态,再行采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。

与此同时,虽然触发器功能强大,轻松可靠地实现许多复杂的功能,为什么又要慎用?过多触发器会造成数据库及应用程序的维护困难,同时对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程序。

语法

建立触发器

删除触发器:

修改触发器:


开启和禁用:


提醒和保护:

示例

在S表创建UPDATE触发器:


禁止删除SC表中成绩不及格学生的记录:


禁止将SC表中不及格学生的成绩改为及格:



分享到:
评论

相关推荐

    SqlServer触发器调用WebService

    此外,这种方法还可以方便地扩展到其他类型的Web服务调用,只需修改触发器中的URL和方法名即可。 综上所述,利用Sql Server触发器调用WebService是一种高效且灵活的方式,可以极大地提高系统的自动化程度,减少手动...

    SQLSERVER触发器插入数据

    本篇文章主要介绍如何在SQL Server中使用触发器来实现数据的自动插入功能。触发器是一种存储过程,它定义在特定的表上,并且在特定的事件(如插入、更新或删除操作)发生时自动执行。 #### 二、描述详解 描述中的...

    SQLServer触发器语法.pdf

    SQL Server 触发器语法详解 SQL Server 触发器是数据库管理系统中的一种机制,用于在执行某些操作时自动执行特定的操作。触发器可以帮助维护数据的一致性和完整性,提高数据库的安全性和可靠性。本文将详细介绍 SQL...

    SqlServer触发器写法案例

    在这个触发器中: - 使用`AFTER INSERT`指定了触发器类型,即在插入操作完成之后执行。 - `inserted`是一个特殊的表,包含了所有由触发事件所插入的新行。 - 通过`JOIN`操作获取了需要更新的类别ID以及对应的数量。 ...

    sqlserver触发器例子

    ### SQL Server 触发器详解 #### 一、触发器概念 触发器是SQL Server中一种特殊的存储过程,其特点在于不能被显式地调用,而是当对特定表进行数据操作(如插入、更新或删除)时自动激活。通过这种方式,触发器能够...

    sql 触发器 详解与实例

    【SQL触发器详解与实例】 SQL触发器是数据库管理系统中的一种特殊存储过程,它与普通存储过程的主要区别在于,触发器并非由用户直接调用,而是由特定的数据库操作(如INSERT、UPDATE、DELETE)自动触发执行。触发器...

    获取SQL触发器的状态

    ### 获取SQL触发器的状态 #### 知识点详解 在SQL Server中,触发器是一种特殊类型的存储过程,它被设计为响应对特定表的数据修改(如INSERT、UPDATE或DELETE操作)而自动执行。触发器可以用来确保数据完整性,并且...

    SQL数据库 触发器课件

    【SQL数据库触发器详解】 SQL数据库中的触发器是一种特殊的存储过程,它的主要功能是在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行,以此来维护数据的完整性和一致性。触发器的设计旨在增强数据库...

    mysql中触发器使用详解.docx

    在触发器中,`NEW`和`OLD`是两个特殊变量,用于访问触发器操作所涉及的行。对于`INSERT`操作,`NEW`变量包含即将插入(`BEFORE`触发器)或已插入(`AFTER`触发器)的数据。在`UPDATE`操作中,`OLD`变量保存原始数据...

    SQL存储过程及触发器详解

    SQL存储过程及触发器详解

    sql 在更新某字段后写入日志触发器

    本篇文章将详细介绍如何在SQL Server中创建一个触发器,当某个表中的特定字段被更新时,记录相关信息到另一个表中,以实现类似日志记录的功能。 #### 触发器概述 触发器是SQL Server提供的一种机制,可以在表或视图...

    SQL触发器使用实例

    3. **系统表`INSERTED`**:在触发器中,`INSERTED`是一个特殊的系统表,用于存储所有被插入的行。通过查询`INSERTED`表中的`卷烟品牌`列,触发器能够确定哪些行被插入,并且需要更新库存金额。 #### 五、扩展示例...

    sql防注入触发器

    ### SQL防注入触发器知识点详解 #### 一、SQL注入简介 SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过在输入字段中插入恶意SQL代码来操纵数据库查询,从而获取未授权的数据访问或对数据进行修改。为了...

    SQLSever触发器.pdf

    5. 触发器中的伪表:SQL Server提供了一些特殊的表,用于在触发器中访问被修改的数据。例如,`inserted`伪表在INSERT和UPDATE操作后包含新行,而`deleted`伪表在UPDATE和DELETE操作后包含旧行。 6. 触发器的使用...

    sql触发器语法兼实例

    ### SQL触发器语法兼实例 #### 一、触发器简介 触发器是一种特殊的存储过程,它可以在用户尝试对指定的表进行数据修改操作时自动执行。这种机制在数据库管理中非常有用,因为它可以帮助确保数据的一致性和完整性。...

    SqlServer2000触发器

    - 触发器中的事务处理必须谨慎,否则可能导致死锁或其他并发问题。 - 由于触发器是透明的,可能隐藏了业务逻辑,使得调试和维护变得更加困难。 ### 5. 关联资源 虽然提供的压缩包文件名称为`java常用资料.pdf`,但...

    SqlServer触发器详解

    Sql Server中的触发器是一种特殊的存储过程,其主要功能在于维护数据的完整性和实施复杂的业务规则。触发器在数据库设计中扮演着重要的角色,因为它能够自动响应特定的数据操作事件,如INSERT、UPDATE或DELETE,而...

    如何制定自己的SQL Server 2000触发器

    SQL Server 2000 触发器详解 SQL Server 2000 触发器是一种特殊的存储过程,类似于事件函数,可以在查询分析器里创建,也可以在表名上点右键->“所有任务”->“管理触发器”来创建。下面详细讲解如何制定自己的...

    SQL 触发器详解及代码演示

    综上所述,SQL触发器是数据库管理中的重要工具,它们提供了在数据修改前后执行逻辑的能力,有助于确保数据的准确性和业务规则的遵守。理解并熟练使用触发器,能够增强数据库应用的功能性和复杂性。

Global site tag (gtag.js) - Google Analytics