• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

机房收费系统-触发器

mysql 搞代码 4年前 (2022-01-09) 36次浏览 已收录 0个评论

上一篇学习了视图的使用,对于数据库,还有很多需要我们了解的。 触发器,是干什么的呢?怎么用呢?用它有什么好处呢?肯定也会有弊端等等一系列的问题,学习SQL Server的人一定多会对它有所了解的。 我的理解: 当给他一个事件时,给以同时完成另一个事件。

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

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

我的理解:

当给他一个事件时,给以同时完成另一个事件。机房重构里,当我对充值表进行充值时,给它一个Insert事件,使用触发器可以同时更细卡表里的余额。

1、干什么用的:

触发器是SQL Server提供给程序员和数据分析员来保证数据完整性的一种方式,它就是与表事件相关的特殊存储过程。触发器不本文来源gaodai$ma#com搞$$代**码网$能被直接执行,只能为表上的Insert\Update\Delete事件所触发。它也不能传递或接受参数。

2、怎么用:

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

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

-- =============================================-- Author:		-- Create date: -- Description:	-- =============================================ALTER TRIGGER [dbo].[CardBalance]   ON  [dbo].[T_Recharge]    for InsertAS declare @AddMoney varchar(8)declare @Balance numeric(18,0)declare @CardNo varchar(8)                    --声明参数select @AddMoney =Addmoney from T_Recharge select @Balance =Balance from T_Card select @CardNo =CardNo from T_Recharge       --给参数赋值BEGIN	UPDATE T_Card set Balance =@Balance +@AddMoney Where T_Card .CardNo =@CardNo END

对代码功能的解释:

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

3、使用触发器的好处:

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

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

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

弊端:

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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:机房收费系统-触发器

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址