SQL Server -减少代码触发的负担
- 触发器是一张表的增删改操作,引起或触发对还有一张表的增删改操作,所以触发器便有3种类型。各自是deleted触发器。Update触发器,insert触发器
- 触发器又依据替换原来的增删改操作,还是在原来的增删改完毕之后进行增删改操作。分为Instead of触发器和For或者After触发器(for和after属于一种触发器)
- 触发器的使用涉及到两张很重要的表用来保存已经改变或者已经在第一章被操作的表上不存在的记录。各自是虚拟表Inserted和虚拟表Deleted
|
|
虚拟表Inserted |
虚拟表Deleted |
|
在表记录新增时 |
存放新增的记录 |
不存储记录 |
|
改动时 |
存放用来更新的新记录 |
存放更新前的记录 |
|
删除时 |
不存储记录 |
存放被删除的记录 |
- 以下举一个在机房收费系统重构个人版中用到的易于理解的关于触发器的小样例
- 在我们删除T_OnWork_info表中的正在上机工作记录时,同一时候向T_Work_info表中写入工作记录,还同一时候将T_Admin_info表中的IsOn字段改为False
CREATE TRIGGER trigger_delOnWork ON T_OnWork_info FOR DELETE AS DECLARE @name varchar(10)
DECLARE @loginDate varchar(10)
DECLARE @loginTime varchar(10)
DECLARE @logoutDate varchar(10)
DECLARE @logoutTime varchar(10)
DECLARE @comName varchar(10) SELECT @name =(SELECT NAME FROM deleted )
SELECT @loginDate =(SELECT loginDate FROM deleted )-----deleted表用于存储T_OnWork表中已经删除的记录
SELECT @loginTime =(sELECT loginTime FROM deleted )
SELECT @comName =(SELECT comName FROM deleted )
SET @logoutDate=convert(varchar(10),getdate(),101)
SET @logoutTime =convert(varchar(10),getdate(),108) if (SELECT COUNT(*) FROM deleted )=1 BEGIN INSERT INTO T_Work_info(Name,loginDate,loginTime,logoutDate,logoutTime,comName) VALUES(@name,@loginDate ,@loginTime ,@logoutDate,@logoutTime,@comName ) UPDATE T_Admin_info SET IsOn='False' WHERE Name=(SELECT Name FROM deleted ) ROLLBACK TRAN --事务回滚 END怎么样,触发器非常easy吧,大家能够尝试着用用,触发器+事务的回滚机制。非常容易地做到了为代码减负
- 在我们删除T_OnWork_info表中的正在上机工作记录时,同一时候向T_Work_info表中写入工作记录,还同一时候将T_Admin_info表中的IsOn字段改为False
版权声明:本文博主原创文章。博客,未经同意不得转载。
SQL Server -减少代码触发的负担的更多相关文章
- CVE-2020-0618 SQL Server远程代码执行
1.简介 SQL Server Reporting Services(SSRS)提供了一组本地工具和服务,用于创建,部署和管理移动报告和分页报告. SSRS Web应用程序中的功能允许低特权用户帐户通 ...
- SQL Server 异常代码处理
SQL Server使用TRY...CATCH 结构实现TSQL语句的错误处理,TRY命令负责监控语句执行的情况,如果有TSQL语句发生异常,并且严重级别(Severity Level)大于10,并且 ...
- Visual Studio 连接 SQL Server 关键代码
首先先把Visual Studio 上面工具打开-->连接数据库-->选择Microsoft SQL Server进入(有两种验证方式:1.windows验证方式[就是本机验证]:2.SQ ...
- C#操作access和SQL server数据库代码实例
在C#的学习中,操作数据库是比较常用的技术,而access和sql server 数据库的操作却有着不同.那么,有哪些不同呢? 首先,需要引用不同的类.因为有着不同的数据引擎. access:usin ...
- 一段后台C#查询SQL Server数据库代码
using System; using System.Data; using System.Collections.Generic; using System.Linq; using System.W ...
- Sql Server——运用代码创建数据库及约束
在没有学习运用代码创建数据库.表和约束之前,我们只能用鼠标点击操作,这样看起来就不那么直观(高大上)了. 在写代码前要知道在哪里写和怎么运行: 点击新建查询,然后中间的白色空白地方就是写代码的地方了. ...
- sql server 数据库代码备份及还原代码
--备份 BACKUP DATABASE [库名称] TO DISK='E:\qq\ddd.bak' --备份并覆盖 BACKUP DATABASE [库名称] TO DISK='E:\qq\ddd. ...
- SQL Server 为代码减负之存储过程
存储过程能够用来提高数据库的查询效率.由于它事先被编译过.被储存于内存中,每次执行前.不必被从新编译,所以效率非常高. 存储过程是一组sql增删改查的集合,假设程序中的一个功能涉及到对数据库的 ...
- SQL Server数据库代码指令简介
这些是比较常用的命令操作,事先声明,这些命令是不区分大小写的,我按照我的课本来总结用法和知识点,无用的章节自动省略. 没有一点数据库知识基础的可以等我录制视频,不然可能看不懂,视频链接:http:// ...
随机推荐
- 《火球——UML大战需求分析》(第1章 大话UML)——1.3 行为型的UML(Behavior Diagram)
说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...
- Android模拟器设置竖屏
使用Android模拟器測试自己开发的程序时,有时候会发现屏幕为横屏显示,查看效果非常不方便. 这里记录了一种禁止横屏的方法. 在文件 Mainfest.xml 中,在须要禁止横屏的 activit ...
- 有向无环图(DAG)的最小路径覆盖
DAG的最小路径覆盖 定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点. 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖. 最小不相交路径覆盖:每一条路径经过的顶点各不相同.如 ...
- wp天气预报
ak url http://developer.baidu.com/map/index.php?title=car 后台cs using System; using System.Collectio ...
- 全栈project师的毁与誉
全栈(Full Stack)project师.也能够叫全端project师,不管是前端知识,还是后端架构你都要了解.甚至有些调皮的程序猿这样理解全栈project师:全栈project师 = 屌丝战斗 ...
- android中listview分页载入数据
前段时间做的新浪微博项目一直想实现listview分页载入数据,今天最终实现了,哈哈!感觉挺好的,今天又写了个demo给大家分享下. 首先说下listview的优化方案,这也是面试中常考的题目.优化方 ...
- An Overview of Complex Event Processing2
An Overview of Complex Event Processing 翻译前言:感觉作者有点夸夸其谈兼絮絮叨叨,但文章还是很有用的.原文<An Overview of Complex ...
- Android DES加密的CBC模式加密解密和ECB模式加密解密
DES加密共有四种模式:电子密码本模式(ECB).加密分组链接模式(CBC).加密反馈模式(CFB)和输出反馈模式(OFB). CBC模式加密: import java.security.Key; i ...
- 0当执行游戏xc000007b错误的解决方法
如图所示,这个错误是让很多玩家担心. 出现这个错误,可能是硬件的问题,也可能是软件的问题. 可是.因为硬件引起该问题的概率非常小,而且除了更换硬件之外没有更好的解决方法,因此本文将具体介绍怎样通过软件 ...
- Java EE (3) -- Java EE 6 Web Services Developer Certified Expert(1z0-897)
Create an SOAP web service in a servlet container Create a RESTful web service in a servlet containe ...