机房收费系统—《触发器》
上一篇学习了视图的使用,对于数据库,还有非常多须要我们了解的。
触发器。是干什么的呢?怎么用呢?用它有什么优点呢?肯定也会有弊端等等一系列的问题,学习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 1@AddMoney =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 =@CardNo --给參数赋值 BEGIN UPDATE T_Card set Balance =@Balance +@AddMoney Where T_Card .CardNo =@CardNo END
对代码功能的解释:
我有两张表,充值表里存放充值记录,卡表里存放剩余金额,当我充值时。对充值表插入一条记录,要同一时候更新卡表里的剩余金额。如今卡表里的剩余金额=上次剩余金额+充值金额
3、使用触发器的优点:
1、触发器的开销很低,执行触发器所占用的时间主要花在引用其他存于内存或磁盘上的表上。
2、通过数据库中的相关表实现级联更改。
3、能够实现比CHECK约束更为复杂的数据完整性。
弊端:
无论是什么都有它的缺点。触发器也是不能滥用的,他也有非常多缺点,滥用触发器会造成数据库以及应用程序的维护困难,假设我们过分依赖触发器。一定会影响数据库的结构。
初次尝试使用触发器。感觉挺方便的。使代码降低了非常多,触发器的使用在以后的学习中还得好好学习,数据库的强大之处还得慢慢挖掘。
此触发器仅仅适合充值操作。不适用于注冊操作。我仅仅考虑了充值是能够更新卡表。可是注冊就有问题了,什么问题大家能够自己去尝试。