`

SQL Server 触发器概述

 
阅读更多
什么是触发器:
触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。本节将介绍触发器的基本概念,以及创建和管理触发器的方法。
触发器是一个在修改指定表值的数据时执行的存储过程,不同的是执行存储过程要使用EXEC语句来调用,而触发器的执行不需要使用EXEC语句来调用,通过创建触发器可以保证不同表中的逻辑相关数据的引用完整性或一致性。
触发器与普通存储过程的不同之处在于:触发器的执行是由事件触发的,而普通存储过程是由命令调用执行的。


触发器的优点:
触发器是自动的。当对表中的数据做了任何的修改之后可以立即被激活。
触发器可以通过数据可中的相关表进行层叠更改。
触发器可以强制限制。这些限制比CHECK约束所定义的更复杂,与CHECK约束不同的是,触发器可以应用其他表中的列。


触发器的作用:
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性,它能够对数据库中的相关表进行级联修改,能提供比CHECK约束更复杂的数据完整性,并自定义错误信息。触发器的主要作用有以下几个方面:
强制数据库之间的应用完整性。
级联修改数据库中所有相关的表,自动触发其他与之相关的操作。
跟踪变化,撤销或回滚违法操作,防止非法修改数据。
返回自定义的错误信息,约束无法返回信息,而触发器可以。
触发器可以调用更多的存储过程。



触发器的分类:
SQL Server提供了两种触发器选项,即DML触发器和DDL触发器。

数据操作语言(DML——DataManipulation Language)触发器:

DML触发器是对SQL Server 2000触发器的继承,它包括以下3种类型:

AFTER触发器 在执行了INSERT、UPDATE或DELETE语句操作之后执行AFTER触发器。指定AFTER与指定FOR相同,而后者是SQL Server早期版本中唯一可使用的选项。AFTER触发器只能在表上指定。
INSTEAD OF触发器执行INSTEAD OF触发器以代替引发触发器的数据库操作。
CLR触发器 可以是AFTER触发器或INSTEAD OF触发器,还可以是DDL触发器。CLR触发器将执行在托管代码(在.NET Framework中创建并在SQL Server中上载的程序集的成员)中编写的方法,而不用执行Transact-SQL存储过程。


数据定义语言(DDL——Data Definition Language)触发器:

DDL触发器响应数据定义语言 (DDL)语句时触发。它们可以用于在数据库中执行管理任务,例如,审核以及规范数据库操作。
DML触发器是针对INSERT、UPDATE和DELETE等数据库操作语句进行触发,而DDL则是针对CREATE、ALTER和DROP等数据库定义语句进行触发。

创建触发器:
可以使用CREATE TRIGGER语句来创建触发器。它的基本语法结构如下:

CREATETRIGGER<触发器名>

ON{ <表名> | <视图名>}

[WITH ENCRYPTION ]

{

{ { FOR | AFTER | INSTEAD OF } { [INSERT ] [ , ] [ UPDATE ] }

AS

<SQL语句>[ ...n]

}

}

1.<触发器名>必须符合标识符规则,并且在数据库中必须唯一。可以选择是否指定触发器所有者名称。
2.<表名> | <视图名>是在其上执行触发器的表或视图,有时称为触发器表或触发器视图。可以选择是否指定表或视图的所有者名称。
3.WITH ENCRYPTION可以对触发器进行加密处理。
4.AFTER指定触发器只有在触发SQL语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。如果仅指定FOR关键字,则AFTER是默认设置。不能在视图上定义AFTER触发器。
5.INSTEAD OF指定执行触发器而不是执行触发SQL语句,从而替代触发语句的操作。
在表或视图上,每个INSERTUPDATEDELETE语句最多可以定义一个INSTEAD OF触发器。
6.{ [DELETE] [,] [INSERT] [,] [UPDATE] }是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。
7.AS指定触发器要执行的操作。
8.<SQL语句>是触发器的条件和操作。触发器条件指定其他准则,以确定DELETEINSERTUPDATE语句是否导致执行触发器操作。当尝试DELETEINSERTUPDATE操作时,Transact-SQL语句中指定的触发器操作将生效。
例:
在表Employees中创建一个INSERT触发器,如果插入记录的Dep_Id值在表Departments中不存在,则不执行插入操作,并提示用户,具体代码如下:

USE HrSystem

GO

CREATE TRIGGER insert_Employees ON Employees

FOR INSERT

AS

--从表inserted中获取新插入记录的部门编号

DECLARE @depidint

DECLARE @depname varchar(100)

SELECT @depid = Dep_Id FROM inserted

--判断插入的部门编号是否存在

SELECT @depname=Dep_name FROM Departments WHERE Dep_id=@depid

IF @depname IS NULL

BEGIN

PRINT '指定部门不存在,请选择具体部门!' -- 提示错误信息

ROLLBACK TRANSACTION -- 回滚操作

END

GO




分享到:
评论

相关推荐

    SqlServer触发器写法案例

    ### SqlServer触发器详解与案例分析 #### 一、触发器概述 触发器是一种特殊类型的存储过程,它被定义为当特定的事件(如数据的插入、更新或删除)发生时自动执行。Sql Server 中的触发器可以用来强制业务规则或者...

    sqlserver 创建触发器 远程服务器相应执行SQL语句

    ### SQL Server 创建触发器实现远程服务器相应执行SQL语句 #### 概述 本文将详细介绍如何在SQL Server中创建触发器来实现当本地数据库发生数据插入时,在远程服务器上相应地执行SQL语句,实现数据同步。这通常用于...

    新增用户就发送邮件和手机短信的SqlServer触发器

    ### 一、触发器概述 在SQL Server中,触发器是一种特殊类型的存储过程,它被定义为当特定事件(如INSERT、UPDATE或DELETE操作)发生时自动执行的一段代码。通过触发器,数据库管理员可以确保数据的完整性和一致性,...

    SQL_Server触发器创建、删除、修改、查看示例

    ### SQL Server 触发器创建、删除、修改、查看示例 #### 一、概述 在 SQL Server 中,触发器是一种特殊类型的存储过程,它自动执行响应数据更改(如 INSERT、UPDATE 或 DELETE)操作。触发器可以确保数据完整性,...

    SQL 2005中存储过程和触发器调试大法.doc

    在SQL Server 2005中,存储过程和触发器的调试对于开发人员来说至关重要,尤其是在复杂的业务逻辑处理中,能够有效地定位问题所在,提高代码质量和开发效率。然而,与SQL Server 2000不同,SQL Server 2005不再直接...

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

    #### 触发器概述 触发器是SQL Server提供的一种机制,可以在表或视图上定义,在特定的数据操作语言(DML)事件(如INSERT、UPDATE、DELETE)发生时自动执行。触发器可以用来确保数据完整性、实施复杂的数据验证规则...

    SQL Server应用开发概述

    这篇文档将对SQL Server的应用开发进行概述,帮助开发者理解其核心概念、功能以及如何在实际项目中运用。 首先,SQL Server提供了强大的数据存储和管理能力。它支持多种数据类型,包括数值类型(如整数、浮点数)、...

    SQL Server数据库触发器概述

    在SQL Server数据库中,触发器是一种特殊的存储过程,它在特定的数据操作语言(DML)事件发生时自动执行。这些事件通常包括INSERT、UPDATE或DELETE操作。触发器的设计旨在提供数据库级别的复杂业务规则和数据完整性...

    SQLserver存储过程与触发器.pdf

    触发器概述 触发器是 SQL Server 中的一种特殊类型的存储过程,用于自动执行某些操作。当某个事件发生时,触发器将被激活,并执行相应的操作。 创建触发器 创建触发器可以使用 CREATE TRIGGER 语句。创建触发器...

    SqlServer转换Oracle.docx

    本文将围绕《SqlServer转换Oracle.docx》文档中的关键知识点进行详细解析,帮助读者更好地理解和掌握SQL Server到Oracle迁移过程中的技术要点。 #### 二、连接字符串与数据源处理 在文档中提到了一种获取连接字符串...

    Oracle和SqlServer语法区别

    下面将概述Oracle和SqlServer语法之间的相同点和不同点,并提供一些转换策略。 一、SELECT语句 SELECT语句是最基本的SQL语句,用于从数据库表中检索数据。Oracle和SqlServer的SELECT语句语法类似,但是也存在一些...

    SQLSever触发器.pdf

    SQL Server触发器知识点详解: 1. 触发器概述:触发器是一种特殊类型的存储过程,它会在对表进行插入(INSERT)、更新(UPDATE)或删除(DELETE)操作时自动执行。触发器可以用来保证数据的完整性,进行复杂的业务...

    SQLServer7指南(下)

    《SQLServer7指南(下)》是一份专为SQL Server 7.0用户设计的详尽教程,旨在帮助用户深入理解和掌握这一版本的数据库管理系统。SQL Server 7.0是微软发布的一个重要的数据库产品,虽然现在已经较为老旧,但对于理解...

    SQL Server:触发器实例详解

    SQL Server2000提供了两种触发器:“Instead of” 和“After” 触发器。 一个表或视图的每一个修改动作(Insert、Update和Delete)都可以有一个“Instead of” 触发器,一个表的每个修改动作都可以有多个“After”...

    数据库技术及应用——SQL Server课件 2SQL Server 系统概述.ppt

    在"数据库技术及应用——SQL Server课件 2SQL Server 系统概述.ppt"中,我们聚焦于SQL Server的特点、安装、体系结构以及其关键组件。 1. **SQL Server 的特点** - **用户界面良好**:SQL Server 提供了直观的图形...

    Inside Microsoft SQL Server 2008 T-SQL Programming.pdf

    #### 一、SQL Server 2008概述 《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入地介绍了SQL Server 2008的各项特性与技术细节。SQL Server 2008是微软在2008年推出的一款企业级关系型数据库管理...

    Professional Microsoft SQL Server_2016英文原版.7z

    1. **SQL Server 2016概述**:介绍SQL Server 2016的新特性,如增强的数据安全性、性能提升、大数据支持以及云服务集成。 2. **安装与配置**:详细讲解SQL Server 2016的安装过程,包括硬件需求、安装选项、角色...

    chap01 SQL Server 2005概述.pdf

    ### SQL Server 2005概述 #### 1.1 SQL Server 2005简介 SQL Server 2005是由微软公司开发的一款全面的数据库管理系统,它为用户提供了一个强大的平台来管理企业级的数据。相比之前的版本,SQL Server 2005增加了...

Global site tag (gtag.js) - Google Analytics