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有一段时间,在我们接触到的理论这么多东西的接触一直觉得非常深刻的方式。我会一直认为简单的CRUD能够解决眼前的问题。

我们将不再只有当我们学习一门新技术,会感觉。原来还有这样的事情。

时间: 2024-10-15 14:18:33

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

SQL Server 统计信息维护策略的选择

SQL Server 统计信息维护策略的选择 问题描述: 在对OLTP系统的一个上千万的表做归档后,循环分批删除源表数据时,业务应用收到超时告警,如下: V1.1.1.1: ****Process - QueryTransactionFor****: 23075129 Timeout expired.   The timeout period elapsed prior to completion of the operation or the server is not responding.

MYSQL实时触发SQL SERVER 实例

以下给出如何实现MYSQL数据表更新实时触发sql server里面对应表的增删改操作,首先,增加原来的mysql的表的触发器,包括以下三个: 插入数据: delimiter || DROP TRIGGER IF EXISTS t_afterinsert_on_accounts || CREATE TRIGGER t_afterinsert_on_accounts AFTER INSERT ON sugarcrm642ce.accounts FOR EACH ROW BEGIN insert i

SQL SERVER 触发器-改成成行级触发功能

近期第一次用SQL SERVER写触发器,发现SQL与ORACLE的触发器还是有区别的,最大区别: (1)SQL只有语句级触发,没有行级触发: (2)ORACLE有语句级触发和行级触发: 由于SQL没有行级触发,因此单独使用语句级来编写触发器会出现问题.为通俗易懂,举个例子:用SQL编写一个update触发器,在update数据时触发,若用以下语句 SET @OldMes = ( SELECT rhtype FROM deleted ) SET @UpdateMes = ( SELECT rht

Performance Monitor4:监控SQL Server的IO性能

SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Application创建IO请求,到Disk完成IO请求的时间延迟.如果物理Disk不能及时完成IO请求,跟不上请求负载的速度,那么SQL Server就容易出现性能问题.SQL Server内部在执行一些特定的操作时,会和Disk做读写交互,这也会影响物理硬盘响应SQL Server的IO请求的性能,使查询进程处

SQL Server 2012 案例教程(贾祥素)——学习笔记

第2章 SQL Server 2012概述 1.SQL(Structed Query Language),结构化查询语言. 2.SSMS(SQL Server Mangement Studio),SQL Server 2012的操作环境. 3.连接SQL Server之前应先启动SQL Server服务,即SQL Server(MSSQLSERVER): 方法1 开始--所有程序--Microsoft SQL Server 2012--配置工具--SQL Server配置管理器. 方法2 控制面

SQL Server -为代码减负之触发器

触发器是一张表的增删改操作,引起或触发对另一张表的增删改操作,所以触发器便有3种类型,分别是deleted触发器,Update触发器,insert触发器 触发器又根据替换原来的增删改操作,还是在原来的增删改完成之后进行增删改操作,分为Instead of触发器和For或者After触发器(for和after属于一种触发器) 触发器的使用涉及到两张非常重要的表用来保存已经改变或者已经在第一章被操作的表上不存在的记录,分别是虚拟表Inserted和虚拟表Deleted 虚拟表Inserted 虚拟表

SQL SERVER大话存储结构(1)

阅读目录(Content) 1 数据页的类型 1.1 PFS 1.2.3 IAM 2 数据页结构 2.1 页头 2.2 行记录 2.3 空闲空间 2.4 行偏移量 3 查询数据页存储格式的途径 3.1 dbcc ind 3.1.1 语法说明 3.1.2 测试案例 3.2 dbcc page 3.2.1 语法说明 3.2.2 测试案例 如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持! SQLServer的数据页大小是8

SQL SERVER的统计信息

可以看到,统计信息分为三部分内容,头信息,数据字段选择性及直方图. 2.1 头信息 列名 说明 Name 统计信息的名称. Updated 上次更新统计信息的日期何时间 Rows 预估表中的行数,不一定是精确的 Rows Sampled 统计信息的抽样行数,如果小于Rows,则说明直方图和密度结果是更加抽样行估计的 Steps 直方图中的梯级数.Number of steps in the histogram.每个梯级都跨越一个列值范围,后跟上限列值. 直方图梯级是根据统计信息中的第一个键列定义

SQL Server Extended Events 进阶 1:从SQL Trace 到Extended Events

http://www.sqlservercentral.com/articles/Stairway+Series/134869/ SQL server 2008 中引入了Extended Events 用以替换SQL Trace. 然而在第一个版本中并没有为用户提供UI,因此使用Extended Events并不是很方便.SQL Server 2012及时修正了这一点,将UI管理工具集成在SSMS中, 这就意味着我们不需要再为了查询Event XML而学习使用XQuery了.因此跟多的DBA和开

常用的sql server规范

常见的字段类型选择 1.字符类型建议采用varchar/nvarchar数据类型 2.金额货币建议采用money数据类型 3.科学计数建议采用numeric数据类型 4.自增长标识建议采用bigint数据类型   (数据量一大,用int类型就装不下,那以后改造就麻烦了) 5.时间类型建议采用为datetime数据类型 6.禁止使用text.ntext.image老的数据类型 7.禁止使用xml数据类型.varchar(max).nvarchar(max) 约束与索引 每张表必须有主键 •每张表必