SQL SERVER数据库开发之触发器的应用
引用: | |
|
触发器一个应用就是保持和维护数据的完整性及合法性,那么怎么来理解呢?就是说你可以在程序里提交任意数据,然后由触发器来判断数据的完整性及合法性,当然这里只是举例说明,实际应用中不推荐这样用,应该由应用程序来验证数据的完整性及合法性。
下面我还是以实例的方式来描述触发器的应用。
设:当前数据库中有“uMateriel”和“uRecord”两张表,他们分别用来保存物品信息和物品的出入库记录信息,结构如下
引用: | |
|
好了,数据表已经有了,现在看一下实际的应用。
现在,我们要购入物品A,数量100,时间为当天,已知物品A的编号为1,那么通常我们需要做以下两个步骤:
引用: | |
|
也就是说代码中要先后处理以上两条语句,才能保证库存的准确性,以ASP代码为例:
引用: | |
|
以上代码可以更新一条入库记录了,但是我们今天要了解的是触发器的应用,那么要在触发器里写什么内容可以简化以上代码呢?下面来创建一个触发器。
创建触发器的语法很长,简化为:
引用: | |
|
引用: | |
|
现在根据上面的语法我们建立一个触发器(注意一点,触发器是附于一张表或视图的,所以只能在表里建立或在查询分析器里建立),这个触发器的功能就是自动更新库存数量
引用: | |
|
我们现在来了解一下这个触发器,首先使用 CREATE TRIGGER 语句定义一个基于 uRecord 表的触发器 trUpdateMaterielNum,AFTER INSERT 表明这个触发器会在插入记录之后执行,也就是说当我们在程序里执行 INSERT INTO uRecord (mId, rNum, rMode) VALUES (1, 100, 0) 这条语句之后,trUpdateMaterielNum这个触发器里的内容就会被自动执行,也就是说库存将会被自动更新了。现在我们更改一下ASP的代码
引用: | |
|
是不是简化了很多呢,是的,在这里已经不用考虑库存方面,只需要插入流水帐就可以了,库存更新就交由触发器来处理。
以上的例子是触发器的其中一个应用,在触发器的参数中还有 DELETE、UPDATE,他们分别在删除和更新时或之后执行。下面看一个删除时的触发器例子。
我们在数据库中增加一个表,用来记录日志,其结构如下
引用: | |
|
现在假设这张表是用来记录系统的日志用的,当我们删除一条流水帐时,往日志表里记录一条事件,那么我们来创建一个基于 uRecord 表的删除时的触发器
引用: | |
|
建立好触发器后,现在只要我们删除 uRecord 表中的一条记录,就会在系统日志中增加一条事件日志。
通过以上简单的介绍,希望原来没有使用过触发器的朋友能对触发器有个大致的概念和印象,如果你要深入了解的话,SQL SERVER联机丛书就是你的好帮手。那么触发器的简单应用就介绍到这儿了,我们下次再会。
转载于:https://www.cnblogs.com/yamajia/archive/2006/10/07/522537.html
SQL SERVER数据库开发之触发器的应用相关推荐
- 超级好的Sql Server数据库开发与管理软件--Toad for SQL Server
使用Toad系列数据库工具软件,可以使数据的开发更方便.快捷.网址为:http://www.toadsoft.com/.以前用Oracle开发,用的工具是pl/sql developer,后来数据库转 ...
- SQL Server数据库开发的二十一条军规
如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS). 在 ...
- SQL Server数据库开发
如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS). 在 ...
- C++进行sql server数据库开发
下面使用ADO进行c++数据库开发 下面的每个小标题中代码都是不完整的,可能无法编译通过,只是分析,完整的代码会放在最后. 如果有什么地方有错误,请尽管指出来,十分感谢. 1.首先先创建一个C++的项 ...
- SQL Server数据库开发(3.SQL高级查询)
一,嵌套子查询 降低SQL语句的复杂度,提高SQL语句的可读性 --子查询作为条件 (where) --查询王五前面的同学 select * from StuInfo where stuid < ...
- 如何记录SQL Server数据库对象
介绍 (Introduction) In any good programming reference, you will read that a developer has to document ...
- 浅谈SQL Server 数据库的触发器
浅谈SQL Server 数据库的触发器 触发器的特征: 1.触发器是在对表进行增.删.改时,自动执行的存储过程.触发器常用于强制业务规则,它是一种高级约束,通过事件进行触发而被执行. 2.触发器 ...
- 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》...
一.课程笔记 1.1 软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...
- sql azure 语法_使用Azure Data Studio开发SQL Server数据库
sql azure 语法 In the previous article, Starting your journey with Azure Data Studio, we put the first ...
最新文章
- 干货 | 如何入手卷积神经网络
- 央行:货币政策稳健并不意味着一成不变
- IEC61850电能质量1~50次谐波有效值建模
- Apache Spark学习:利用Eclipse构建Spark集成开发环境
- php怎么从文件中读取数据库连接,PHP连接 读取 写入mysql数据库的方法 附常用代码...
- Toolbar中Overflow Menu不显示问题
- android 开发文档模板
- 中set无效是怎么回事_一起认识下,那些我们应该知道的mysql中的变量知识点
- Kubernetes搭建可扩展的微服务系统
- linux数据泵恢复,Oracle Linux环境中使用数据泵的形式还原Oracle数据库
- 微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题
- BackgroundWorker的使用
- 站闻资讯项目开发个人总结
- pycharm多行代码同时注释、去除注释
- 各种编程语言的适用范围
- oracle实现批量drop表,ORACLE下批量DROP表格
- Solidity IDE Remix中文版使用手册
- 解决魔兽争霸(冰封王座)1.20 浩方建主机卡机问题。
- 矩阵三角分解matlab,4矩阵三角分解法.ppt
- 基于智能手机的加速计进行计步实现。
热门文章
- Android开发笔记(五十二)通知推送Notification
- Node.js ORM 框架 Sequelize 重要更新 v5 发布
- 内核管理 之 内核管理概述
- redis主从配置转
- ASP.NET性能监控和优化入门
- Codeforces Round #356 (Div. 1) D. Bear and Chase 暴力
- Web应用工作原理、动态网页技术
- Octopress使用中经验总结
- 视频压缩知识介绍(一)——评价标准及算法原理
- python canny算法_Python 实现 Canny 边缘检测算法