机房收费系统—《触发器》

上一篇学习了视图的使用,对于数据库,还有非常多须要我们了解的。

触发器。是干什么的呢?怎么用呢?用它有什么优点呢?肯定也会有弊端等等一系列的问题,学习SQL Server的人一定多会对它有所了解的。

我的理解:

当给他一个事件时。给以同一时候完毕还有一个事件。

机房重构里,当我对充值表进行充值时。给它一个Insert事件,使用触发器能够同一时候更细卡表里的剩余金额。

1、干什么用的:

触发器是SQL Server提供给程序猿和数据分析员来保证数据完整性的一种方式,它就是与表事件相关的特殊存储过程。

触发器不能被直接运行,仅仅能为表上的Insert\Update\Delete事件所触发。

它也不能传递或接受參数。

2、怎么用:

已经介绍了触发器是为表上的增删改事件触发,所以要在须要触发器的表里创建。

以机房收费系统里的充值表为例

-- =============================================
-- Author:		<赵亚盟>
-- Create date: <2014年8月5日21:25:06>
-- Description:	<当插入一条充值记录时,自己主动更新卡表中的剩余金额>
-- =============================================
ALTER TRIGGER [dbo].[CardBalance]
   ON  [dbo].[T_Recharge]
   for Insert
AS
declare @AddMoney varchar(8)
declare @Balance numeric(18,0)
declare @CardNo varchar(8)                    --声明參数
select top [email protected] =Addmoney from T_Recharge order by DateTime desc
select top 1 @CardNo =CardNo from T_Recharge order by DateTime desc
select @Balance =Balance from T_Card Where CardNo [email protected]	--给參数赋值

BEGIN

	UPDATE T_Card set Balance [email protected] [email protected] Where T_Card .CardNo [email protected] 

END

对代码功能的解释:

我有两张表,充值表里存放充值记录,卡表里存放剩余金额,当我充值时。对充值表插入一条记录,要同一时候更新卡表里的剩余金额。如今卡表里的剩余金额=上次剩余金额+充值金额

3、使用触发器的优点:

1、触发器的开销很低,执行触发器所占用的时间主要花在引用其他存于内存或磁盘上的表上。

2、通过数据库中的相关表实现级联更改。

3、能够实现比CHECK约束更为复杂的数据完整性。

弊端:

无论是什么都有它的缺点。触发器也是不能滥用的,他也有非常多缺点,滥用触发器会造成数据库以及应用程序的维护困难,假设我们过分依赖触发器。一定会影响数据库的结构。

初次尝试使用触发器。感觉挺方便的。使代码降低了非常多,触发器的使用在以后的学习中还得好好学习,数据库的强大之处还得慢慢挖掘。

此触发器仅仅适合充值操作。不适用于注冊操作。我仅仅考虑了充值是能够更新卡表。可是注冊就有问题了,什么问题大家能够自己去尝试。

时间: 2024-10-12 14:41:59

机房收费系统—《触发器》的相关文章

机房收费系统-触发器

上一篇学习了视图的使用,对于数据库,还有很多需要我们了解的. 触发器,是干什么的呢?怎么用呢?用它有什么好处呢?肯定也会有弊端等等一系列的问题,学习SQL Server的人一定多会对它有所了解的. 我的理解: 当给他一个事件时,给以同时完成另一个事件.机房重构里,当我对充值表进行充值时,给它一个Insert事件,使用触发器可以同时更细卡表里的余额. 1.干什么用的: 触发器是SQL Server提供给程序员和数据分析员来保证数据完整性的一种方式,它就是与表事件相关的特殊存储过程.触发器不能被直接

机房收费系统之触发器

印象里边最早接触触发器是在耿建玲的视频里边见到的,但是完全不理解,但是在实现机房收费系统的时候,就发现原来SQL Server中还有这么一个强大的功能,简直是和存储过程合称为最佳兄弟二人组. 首先我们看看触发器是什么? 触发器,因为我先认识的存储过程+事务,所以我在这里把他称为存储过程的小兄弟,至于为什么,因为他们真的很像,对于存储过程,大家可以在http://blog.csdn.net/lovemenghaibin/article/details/38235817了解,这里就不详细的介绍了,但

机房收费系统合作——再看数据库设计

机房合作我负责了最简单的D层,接口层,工厂层.反正D层是我来写,于是数据库索性也就顺便设计了.已经是第三次敲机房收费系统了,每次都是相隔半年左右吧.需求搞得透透的了,数据库也就好设计了.基本跟第二次没什么大的区别,就是把Student表和Card表分开了. 重构的时候,我的数据库几乎什么都用到了:事务,存储过程,触发器,视图,联合查询等等.所以,这次设计数据库还是SO Easy的..并且,为了让婵婵和牛迁迁师哥写的方便,我把组合查询都写成了存储过程!!!!费了一番功夫,但是D层简单了不少.还记得

机房收费系统学生下机结账小结

这几天一直在考虑机房收费系统学生下机操作.学生下机,一则须要加入学生下机记录信息:还须要计算学生在整 个上机过程中所花费的金额,而且更新学生剩余金额.那么如何做在性能上或者扩展上更好一些呢? 操作 1.加入学生下机信息 2.计算学生上机时间 3.依据上机时间来计算学生所花费的金额 4.更新学生的剩余金额 设计模式 在通过学生上机时间来计算学生所花费的金额这步操作上,须要进行一些条件分支语句的推断.由于上机时间被分为 了三部分:准备时间.至少上机时间.上机时间.所以在步骤3中有大量的条件分支语句,

机房收费系统—《存储过程》

前两天博客写了视图和触发器,本来不想写存储过程了,想想会用就行了.但是自己在用的过程中越到很多问题,不做个总结一定还会用错的. 机房收费系统里我为什么要用它呢? 在这之前我的回答是:因为大家都在用,所以一定会用到. 现在我的回答是:因为它可以将常用的或者很复杂的工作,用SQL语句写好并存储起来,用户在可以直接通过存储过程的名称进行调用. 相对于使用SQL语句,存储过程的好处是: 1.执行速度快 存储过程创建的时候,数据库已经对其进行了一次解析和优化,存储过程一旦执行,就会保留在内存中,下次再执行

机房收费系统--存储过程

在这次机房收费系统中学习到的东西还真不少.E-R图,视图,存储过程,触发器等等.这些东西都是在之前学习过的,这次运用到实践中,收获倍增. 运用存储过程的好处 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用. 3.过程可以重复使用,

个人版机房收费系统总结

用了一个月的时间,重构完成了个人版的机房收费系统,不来个总结心里就有点儿不踏实. 首先说说一年前第一次敲机房收费系统的事儿,那是纯面向过程,能实现功能就可以.当初完成了这个系统,可谓是在提高班学习中的又一个里程碑,纯手工制作,精心打造.我们学会了分析业务流程,消化吸收VB和数据库的学习成果,提高对代码的亲和力,培养对编程的兴趣. 一年后的现在经历了第二次机房收费系统,深刻体会到了米老师编制培养计划的良苦用心,我们其实是在攀登一座高山,一步一个台阶.在第一次机房收费系统中暴露出来的问题得以解决和完

机房收费系统之下机完整版

前篇博客只是简单的说了下,机房收费系统下机的简单思路,下面来正式的介绍下整个流程. 分析 由于下机的时候需要涉及到两个表中的数值--StudentInfo表和OnlineInfo表,那么我们的思路就是如何能够简化查 询的操作. 学生表中包含的学生的静态信息,而上机信息表中则包含了有关学生上机的所有的信息. 流程 1.更新学生下机信息 2.触发器触发后,会自动的更新学生的消费时间,消费金额并更新学生余额 3.两张表联合查询有关界面上的所有信息 4.为所有的文本框赋值 注意:其实最有意思的就是触发器

与机房收费系统的再一次相处(.NET版):

机房收费系统个人重构的尾巴,也就是到了整体总结的时候了.师傅的每一次验收都会有太多的收获,自己暴漏的漏洞也越多. 首先,说说时间.有史以来,觉得最高效利用时间的一次,这和师傅的指导和督促是拖不了关系的.正直专业期末考试的那个月,时间抓起来就稍微有点费劲,但是,做好规划,还是觉得没有那么忙.因为在开始之前,师傅就给规定了时间,说什么内容多长时间内完成.每天都有自己的计划,要完成几个窗体或者是画多少图,早就找米老师谈过时间管理的问题,只有这时才深有体会.有这样的好师傅管着就好好学习,如果师傅不管了那