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都或多或少存在某些误区,最近和高文佳同学(感谢高同学的探讨) ...
随机推荐
- 主机Window不能访问该虚拟机Linux Samba文件服务提供了一个文件夹
我最近遇到一个问题.虚拟机Linux中间Samba服务常开.主办"\\192.168.229.200" (我的虚拟机Linux址)訪问不了Share文件夹(/var/test),并 ...
- 最佳新秀SSH十六Struts2它是如何工作的内部
前面说完了Spring.Hibernate,非常自然今天轮到struts了.struts的核心原理就是通过拦截器来处理client的请求,经过拦截器一系列的处理后,再交给Action.以下先看看str ...
- hibernate 基本和简单易用
首先hibernate.cfg.xml构造,在该文件src文件夹 <!DOCTYPE hibernate-configuration PUBLIC "-// ...
- 【Linux探索之旅】第一部分第六课:Linux如何安装在虚拟机中
内容简介 1.第一部分第六课:Linux如何安装在虚拟机中 2.第二部分第一课预告:终端Terminal,好戏上场 Linux如何安装在虚拟机中 虽然我们带大家一起在电脑的硬盘上安装了Ubuntu这个 ...
- HTML5实际和离线应用分析
当前离线Web申请书,即,该装置不能访问因特网时的应用的执行.HTML5离线应用重点,主要开发人员希望.步骤离线应用开发有:首先我们应该知道设备是否可以连接;然后,它也应该可以访问某些资源(像.CSS ...
- Android菜鸟的成长笔记(15)—— Android中的状态保存探究(下)
原文:Android菜鸟的成长笔记(15)-- Android中的状态保存探究(下) 在上一篇中我们简单了解关于Android中状态保存的过程和原理,这一篇中我们来看一下在系统配置改变的情况下保存数据 ...
- iOS 中client和server的 Web Service 网络通信 (2)
在实际的应用开发过程中,同步请求的用户体验并非非常好:我们都知道.Apple是非常重视用户体验的.这一点也成为了行业的标杆,没实用户哪里来的好产品.所以用户体验是极其重要的.貌似废话有点多.接下来进入 ...
- Java 打开文件的两种方式
import java.awt.Desktop; import java.io.File; import java.io.IOException; public class LnkDemo { pub ...
- TI C66x DSP 系统events及其应用 - 5.8(ISTP)
中断服务表指针ISTP(Interrupt Service Table Pointer)位置寄存器用于定位的中断服务例程,那ISTP去哪里找要运行的程序,ISTP(当中的ISTB字段)就是指向IST表 ...
- Android - 数据存储 -在SQL数据库中保存数据
对于重复的或结构化的数据,保存到数据库中是很好的选择,比如联系人信息.这里假设你对SQL数据库大体上了解然后帮助你学习Android上的SQLite数据库.在Android数据库上需要用到的API可以 ...