SQL Server---触发器

今天第一次使用SQL Server中的触发器感觉很方便,本文将简单的向大家介绍一下SQL Server中的触发器以及其简单的使用。我会从其定义、原理、具体的用法分别大家讲述。

定义

触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由某个事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。

原理

触发器可以查询其他表,而且可以包含复杂的SQL语句。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。

SQLServer包括三种常规类型的触发器:DML触发器、DDL触发器和登录触发器。

DML触发器

当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。

DDL触发器

它是SqlServer2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。

登录触发器

登录触发器将为响应LOGON事件而激发存储过程。

具体用法

再敲机房收费系统的时候,在涉及到学生上下机的时候,我们就要对T_Line和T_Online这两张表进行操作,下机的时候我们需要删除T_Online表中的信息将它写入T_Line中。采用三层架构重构时,顿时觉得从一个表中得到数据返回U层再将其赋值给另一个实体当作参数最终传入另一张表中很是麻烦。于是我就想到了触发器。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<老牛>
-- Create date: <2014-6-2 15:28:00>
-- Description:	<删除正在上机的学生时同时将相关信
--                息添加到学生上机记录表中>
-- =============================================
CREATE TRIGGER [dbo].[triq_T_OnlineDelete]
   ON  [dbo].[T_Online]
   instead of Insert
AS
BEGIN
	declare @CardNo numeric(11, 0)
	declare @studentNo  numeric(11, 0)
	declare @studentName varchar(10)

	--获取参数信息
	select @CardNo=cardNo,@studentNo=studentNo ,@studentName=studentName from deleted
	--添加学生上机记录
	insert into T_Line (cardNo,studentNo ,studentName ) values (@CardNo,@studentNo,@studentName)
	--删除正在上机的学生信息
	delete T_Online where cardNo [email protected]
END
GO

(PS:上段代码(经测试正确)只用到了表中的几个字段其他字段也可用类似方法,特别要注意的是怎样获取下机时间(hh-mm-ss)和下机日期(yyyy-mm-dd),例如:Select CONVERT(varchar(100),GETDATE(), 24;Select CONVERT (varchar(10),getdate(),120))

心得体会

写到这里又想起了那句话“不将就是发现的原动力”,我们学习过程中也用到SQL Server一段时间了,之前我们也接触到了很多理论上的东西总感觉很高深的样子,总想着我会简单的增删改查就能解决目前的问题了。只有我们不再将就的时候我们学习了新的技术,才会感觉到,原来也就这么回事。

SQL Server---触发器,布布扣,bubuko.com

时间: 2024-10-06 11:42:39

SQL Server---触发器的相关文章

SQL Server触发器

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DM

如何编写sql server 触发器详解

在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.常见的触发器有三种:分别应用于Insert , Update , Delete 事件. 编写之前要了解一个关键知识.触发器用到的两个临表:Deleted , Inserted . Deleted 和 Inserted 分别存储触发事件表的"旧的一条记录"和"新的一条记录". 一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧

SQL Server 触发器 转http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html

SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触 发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2

15、SQL Server 触发器

SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器会对数据表,视图进行insert.update.delete的时候触发.DDL则是create.alter.drop等时触发. DML触发器又分为after(之后触发)和insert of(之前触发)触发器. 如果在创建触发器的时候不指定类型,则默认是after触发器. 触发器有两个虚拟的临时表:插

自己写的sql server触发器练练--高手请您跳过吧

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [insertReplyToic] ON [dbo].[bbsReplyTopic] AFTER insertAS BEGIN --SET NOCOUNT ON; -- Insert statements for trigger here declare @uid int,@topicId int,@Rcontent nvarchar(max),@Rtime datetime,@c

SQL Server触发器创建、删除、修改、查看示例步骤

SQL Server触发器创建.删除.修改.查看示例步骤 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表.这两个表. 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束.    

(转)SQL Server 触发器

SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 20

Sql Server 触发器的应用

Sql Server 触发器:指的是 在进行  Insert .Update.Delete时 所执行的操作 我们可以在进行增删改操作的同时对其他数据进行操作.其实触发器算是一种存储过程,只不过执行的机制 只是在进行增删改操作时执行: 应用场景: 需求: 由于业务的需要,需要做一个统计报表,根据角色不同展示相应的四个系统的设备数据:   如果按照查询各个库中设备的数据汇总到一块,这样查询效率很低: 解决方案: 创建一个设备统计表: 使用SQL Server触发器,每增加.删除 设备数据时,同时触发

浅谈 Sql Server 触发器

一.触发器概念 1.1.触发器特征         1.1.1.触发器是在对表进行增.删.改时,自动执行的存储过程.触发器常用于强制业务规则,它是一种高级约束,通过事件进行触发而被执行.         1.1.2.触发器是一个特殊的事务单元,可以引用其他表中的列执行特殊的业务规则或数据逻辑关系.当出现错误时,可以执行rollback transaction操作将整个触发器以及触发它的T-SQL语句一并回滚(不需显示声明begin transaction).         1.1.3.每个触发

SQL SERVER 触发器介绍

什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create.alter.drop语句. DML触发器分为: 1. a