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 =@CardNo
END
GO
(PS:上段代码(经測试正确)仅仅用到了表中的几个字段其它字段也可用类似方法,特别要注意的是如何获取下机时间(hh-mm-ss)和下机日期(yyyy-mm-dd),比如:Select CONVERT(varchar(100),GETDATE(), 24。Select CONVERT (varchar(10),getdate(),120))
心得体会
写到这里我想到那句话“的驱动力被发现,但”,我们还使用了学习过程SQL Server有一段时间,在我们接触到的理论这么多东西的接触一直觉得非常深刻的方式。我会一直认为简单的CRUD能够解决眼前的问题。
我们将不再只有当我们学习一门新技术,会感觉。原来还有这样的事情。
SQL Server---触发的更多相关文章
- SQL SERVER 触发器之After,Instead of
[Ater](同for)先执行增删改操作,再执行触发器操作 [Instead of]直接只执行触发器里的 create trigger triggername on table_name for/af ...
- SQL server 表数据改变触发发送邮件
今天遇到一个问题,原有生产系统正在健康运行,现需要监控一张数据表,当增加数据的时候,给管理员发送邮件. 领到这个需求后,有同事提供方案:写触发器触发外部应用程序.这是个大胆的想法啊,从来没写过这样的触 ...
- SQL Server 2017的Linked Server配置触发的bug“Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION”
SQL Server 2017的Linked Server配置触发的bug"Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION&q ...
- 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版
背景: 由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建.而此时随着业务量的增加 ...
- Performance Monitor4:监控SQL Server的IO性能
SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Applicati ...
- SQL Server 服务器磁盘测试之SQLIO篇(二)
上次放出了一篇文章,针对磁盘卷簇大小默认4KB和自定义64KB进行了测试,测试内容为随机和顺序读写,大小为8KB和64KB,有人觉得这并没有照顾到SQL Server所有的IO使用情景.这篇测试文章, ...
- Sql Server 内存相关计数器以及内存压力诊断
在数据库服务器中,内存是数据库对外提供服务最重要的资源之一, 不仅仅是Sql Server,包括其他数据库,比如Oracle,MySQL等,都是一类非常喜欢内存的应用. 在Sql Server服务器中 ...
- SQL Server触发器
一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发 ...
- SQL Server 触发器
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...
- SQL Server CheckPoint的几个误区
有关CheckPoint的概念对大多数SQL Server开发或DBA人员都不陌生.但是包括我自己在内,大家对于CheckPoint都或多或少存在某些误区,最近和高文佳同学(感谢高同学的探讨) ...
随机推荐
- Qt计算器开发(二):信号槽实现数学表达式合法性检查
表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...
- MySql之ALTER命令用法详细解读(转)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细解读了MySql语法中Alter命令的用法,这是一个用法比较多的语法,而且功能还是很强 ...
- POJ 2485 Highways (prim最小生成树)
对于终于生成的最小生成树中最长边所连接的两点来说 不存在更短的边使得该两点以不论什么方式联通 对于本题来说 最小生成树中的最长边的边长就是使整个图联通的最长边的边长 由此可知仅仅要对给出城市所抽象出的 ...
- Swift String length property
Swift的String居然没有length属性,好难受,每次要获取String的字符串长度都要借助全局函数countElements. 没办法.仅仅有扩展String结构体,给它加入一个属性了. i ...
- 同台电脑部署多组Tomcat负载均衡(或集群)
可能这种需求比较少见,不过如果手上服务器不够用.可以考虑先这么干着.. 具体Tomcat怎么搭集群,就不在这细说了.只写同台电脑部署多组集群需要修改和注意的地方. 一.Apache 先是Apache, ...
- 构建安全的Xml Web Service系列之wse之错误代码详解
原文:构建安全的Xml Web Service系列之wse之错误代码详解 WSE3.0现在还没有中文版的可以下载,使用英文版的过程中,难免会遇到各种各样的错误,而面对一堆毫无头绪的错误异常,常常会感到 ...
- hdu 4920 Matrix multiplication(矩阵乘法)2014多培训学校5现场
Matrix multiplication Time ...
- 如何识别SQL Server中的IO瓶颈
原文:如何识别SQL Server中的IO瓶颈 原文出自: http://www.mssqltips.com/sqlservertip/2329/how-to-identify-io-bottlene ...
- cocos2dx tolua传递参数分析
cocos2dx tolua传递参数分析: tolua_Cocos2d_CCNode_addChild00 == void CCNode::addChild(CCNode *child) tolua_ ...
- Event Sourcing - ENode(二)
接上篇文章继续 http://www.cnblogs.com/dopeter/p/4899721.html 分布式系统 前篇谈到了我们为何要使用分布式系统,因为ENode本身就是一个分布式的框架.看了 ...