触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft® SQL Server™ 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。
1、INSERT触发器:可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。
当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中。inserted表是一个逻辑表,它包含了已经插入的数据行的一个副本。inserted表包含了INSERT语句中已记录的插入动作。inserted表还允许引用由初始化INSERT语句而产生的日志数据。触发器通过检查inserted表来确定是否执行触发器动作或如何执行它。inserted表中的行总是触发器表中一行或多行的副本。
日志记录了所有修改数据的动作(INSERT、UPDATE和DELETE语句),但在事务日志中的信息是不可读的。然而,inserted表允许你引用由INSERT语句引起的日志变化,这样就可以将插入数据与发生的变化进行比较,来验证它们或采取进一步的动作。也可以直接引用插入的数据,而不必将它们存储到变量中。
简单例子:
create trigger trg_insert
on jobs for insert
as
declare @job_id smallint
select @job_id=a.job_id from jobs a inner join inserted b on a.job_id=b.job_id
if @job_id=15
begin
RAISERROR('不能新增',16,8)--触发器提示信息
rollback tran--回滚触发器
end
--测试语句
insert into jobs values('test',11,11)
2、UPDATE触发器:
可将UPDATE语句看成两步操作:即捕获数据前像(before image)的DELETE语句,和捕获数据后像(after image)的INSERT语句。当在定义有触发器的表上执行UPDATE语句时,原始行(前像)被移入到deleted表,更新行(后像)被移入到inserted表。
触发器检查deleted表和inserted表以及被更新的表,来确定是否更新了多行以及如何执行触发器动作。
可以使用IF UPDATE语句定义一个监视指定列的数据更新的触发器。这样,就可以让触发器容易的隔离出特定列的活动。当它检测到指定列已经更新时,触发器就会进一步执行适当的动作,例如发出错误信息指出该列不能更新,或者根据新的更新的列值执行一系列的动作语句。
例子:
create trigger tri_update
on jobs
for update
as
if update(job_desc) --监视指定列的数据更新的触发器
begin
raiserror('job_desc不能修改!',16,8)
rollback tran
end
--测试语句
update jobs
set job_desc='test'
from jobs
where job_id='14'
3、DELETE触发器:
当触发DELETE触发器后,从受影响的表中删除的行将被放置到一个特殊的deleted表中。deleted表是一个逻辑表,它保留已被删除数据行的一个副本。deleted表还允许引用由初始化DELETE语句产生的日志数据。
使用DELETE触发器时,需要考虑以下的事项和原则:
l 当某行被添加到deleted表中时,它就不再存在于数据库表中;因此,deleted表和数据库表没有相同的行。
l 创建deleted表时,空间是从内存中分配的。deleted表总是被存储在高速缓存中。
l 为DELETE动作定义的触发器并不执行TRUNCATE TABLE语句,原因在于日志不记录TRUNCATE TABLE语句。
例子:
create trigger tri_delete
on jobs
for delete
as
declare @job_id smallint
select @job_id=job_id from deleted
if @job_id='1'
begin
raiserror('错误,不能删除ID号为1的记录!',16,8)
rollback tran
end
测试语句:delete from jobs where job_id=1
分享到:
相关推荐
SQL Server Trigger(触发器)是一种特殊的存储过程,它会在满足特定条件下自动执行。触发器可以用于保证数据的完整性,审计跟踪,以及自动执行一系列的数据操作。在SQL Server中,触发器分为两大类:DML触发器和DDL...
KEPSERVER6 实现写入 SQLSERVER 的详细步骤 KEPSERVER6 是一款工业自动化数据采集和监控软件,广泛应用于工业自动化、机器人、物联网等领域。随着工业自动化和物联网的发展,KEPSERVER6 的应用变得越来越广泛。今天...
### SQL Server 触发器创建、删除、修改、查看示例 #### 一、概述 在 SQL Server 中,触发器是一种特殊类型的存储过程,它自动执行响应数据更改(如 INSERT、UPDATE 或 DELETE)操作。触发器可以确保数据完整性,...
Oracle和SqlServer语法区别 Oracle和SqlServer是两种流行的关系型数据库管理系统,它们之间存在着一些语法区别。了解这些区别对于开发者来说非常重要,因为它可以帮助他们更好地迁移到新的数据库管理系统。下面将...
【标题】"WEB版SQL Server管理系统"是一款基于Web的数据库管理工具,专为SQL Server设计,旨在提供一种方便、高效的方式来远程管理和维护SQL Server数据库。它涵盖了SQL Server数据库中的多种对象,包括表、列、视图...
笔记是本人学习SQLServer一段时间后重新整理出来的,适合有一些入门基础的人学习。 ├─01 安装及使用 │ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql │ ├─03 建表、建库 │ create.sql ...
Sql Server 删除所有表数据语句 Sql Server 是一种关系型数据库管理系统,广泛应用于企业级应用程序中。在实际开发和测试中,我们常常需要删除数据库中的所有表数据,而保持表结构不变。下面我们将介绍如何使用一条...
《SQL Server 2005 技术内幕:T-SQL查询源码》是一本深入探讨SQL Server 2005中T-SQL查询技术的专业书籍。T-SQL(Transact-SQL)是Microsoft SQL Server数据库管理系统中使用的SQL扩展版本,它在标准SQL的基础上增加...
在SQL Server 2005中,触发器是一种特殊的存储过程,它在特定的数据操作语言(DML)事件,如INSERT、UPDATE或DELETE发生时自动执行。触发器可以帮助实现复杂的业务规则和数据完整性,通过扩展SQL语句的功能,提供了...
在“quartz实例sqlserver数据库连接”这个主题中,我们主要讨论如何配置Quartz与SQL Server数据库进行交互,以存储和管理调度信息。 首先,Quartz需要一个持久化存储来保存作业(Jobs)和触发器(Triggers)的信息...
SQL Server 2005是微软推出的一款关系型数据库管理系统,它在企业级数据管理和分析中扮演着重要的角色。在SQL Server中,触发器是一种特殊的存储过程,它们在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时...
### SQL Server 触发器知识点解析 #### 一、标题:SQL Server 触发器插入数据 本篇文章主要介绍如何在SQL Server中使用触发器来实现数据的自动插入功能。触发器是一种存储过程,它定义在特定的表上,并且在特定的...
SQL Server是微软公司推出的一款关系型数据库管理系统,广泛应用于企业数据存储、数据分析和业务处理等领域。为了提升在SQL Server中的技能,掌握好SQL语言至关重要。本文将针对"战胜SQL Server必做练习50题"这一...
在SQL Server中,触发器是一种特殊的存储过程,它在数据更改操作(如INSERT,UPDATE或DELETE)发生时自动执行。触发器可以用于实现复杂的业务规则和数据验证,以确保数据库中的数据完整性。在这个例子中,我们关注的...
在SQL Server 2008中,存储过程和触发器是数据库管理中不可或缺的重要组成部分,它们为数据库系统提供了更高级别的功能和控制。本篇将深入解析这两个概念及其在实际应用中的具体用法。 首先,存储过程是预编译的SQL...
MSSQL通过触发器判断是否有重复的数据
在SQL Server数据库管理系统中,存储过程和触发器是两种非常重要的数据库编程元素,它们对于数据库设计和数据管理具有深远的影响。下面将详细讲解这两个概念及其相关的知识点。 **SQL存储过程**: 1. **定义**:SQL...
### SQL Server 创建触发器实现远程服务器相应执行SQL语句 #### 概述 本文将详细介绍如何在SQL Server中创建触发器来实现当本地数据库发生数据插入时,在远程服务器上相应地执行SQL语句,实现数据同步。这通常用于...
### SQL Server从入门到精通 #### 一、SQL Server简介 SQL Server是由微软开发的一款关系型数据库管理系统(RDBMS),广泛应用于企业级数据管理场景。它提供了强大的数据存储、处理和分析功能,支持多种数据类型,...
**SQL Server 2000 触发器详解** 在SQL Server 2000中,触发器是一种特殊的存储过程,它在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器是数据库规则和约束的扩展,可以用于实现更复杂的...